zoukankan      html  css  js  c++  java
  • springboot 整合shiro

    1.依赖添加

     <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-spring</artifactId>
                <version>1.4.1</version>
            </dependency>

    2.

    package com.abc.config;
    
    import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
    import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
    import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @Configuration
    public class MyShiroConfig {
    
    //    Subject  关联SecurityManager
    //    SecurityManager 关联Realm
    //    Realm   关联数据
    
        @Bean
        public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManager securityManager){
            ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    
            Map<String,String> map = new HashMap<String,String>();
            map.put("/user/login","anon");
            map.put("/user/toindex","anon");
    //        map.put("/user/findUser","role");
            map.put("/user/findUser","perms[user:update]");
            map.put("/*","perms");
            map.put("/*","role");
            map.put("/*","authc");
            shiroFilterFactoryBean.setSecurityManager(securityManager);
            shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
            shiroFilterFactoryBean.setLoginUrl("/user/login");
            shiroFilterFactoryBean.setLoginUrl("/user/");
            shiroFilterFactoryBean.setUnauthorizedUrl("/user/unAuth");
            return shiroFilterFactoryBean;
        }
    
        @Bean(name = "securityManager")
        public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
            DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();
            securityManager.setRealm(userRealm);
            return securityManager;
        }
    
        @Bean(name = "userRealm")
        public UserRealm getRealm(){
            return new UserRealm();
        }
    
        @Bean
        public ShiroDialect getShiroDialect(){
            return new ShiroDialect();
        }
    }

    3.

    package com.abc.config;
    
    import com.abc.User.service.IUserService;
    import com.abc.beans.Permission;
    import com.abc.beans.User;
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.*;
    import org.apache.shiro.authz.AuthorizationInfo;
    import org.apache.shiro.authz.SimpleAuthorizationInfo;
    import org.apache.shiro.realm.AuthorizingRealm;
    import org.apache.shiro.subject.PrincipalCollection;
    import org.apache.shiro.subject.Subject;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import java.util.List;
    
    public class UserRealm extends AuthorizingRealm {
    
        @Autowired
        private IUserService userService;
    
        /*
        * 执行授权
        * */
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
    
            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            Subject subject = SecurityUtils.getSubject();
            User user = (User) subject.getPrincipal();
            User dbUser = userService.findUserById(user.getId());
            System.out.println("角色为"+dbUser.getRole());
            List<String> list = userService.findPermissionByRoleId(dbUser.getRole());
            System.out.println(list);
    //        info.addRole(String.valueOf(dbUser.getRole()));
    
            info.addStringPermissions(list);
            return info;
        }
    
        /*
            执行认证
        * */
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
    
            UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
            User user = userService.findUserByUsernameAndPassword(token.getUsername());
            if(user == null){
                return null;
            }
            return new SimpleAuthenticationInfo(user,user.getPassword(),"");
        }
    }

    4.

    <div shiro:hasPermission="user:update">
    <li><a  th:data-href="@{/user/findUser}" data-href="admin-role.html" data-title="角色管理" href="javascript:void(0)">角色管理</a></li>
    </div>
  • 相关阅读:
    www.insidesql.org
    kevinekline----------------- SQLSERVER MVP
    Sys.dm_os_wait_stats Sys.dm_performance_counters
    如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
    VITAM POST MORTEM – ANALYZING DEADLOCKED SCHEDULERS MINI DUMP FROM SQL SERVER
    Cargo, Rust’s Package Manager
    建筑识图入门(初学者 入门)
    Tracing SQL Queries in Real Time for MySQL Databases using WinDbg and Basic Assembler Knowledge
    Microsoft SQL Server R Services
    The Rambling DBA: Jonathan Kehayias
  • 原文地址:https://www.cnblogs.com/mm163/p/11047140.html
Copyright © 2011-2022 走看看