• 整合权限认证


    package com.aa.test.config;
    
    import com.aa.test.shiro.MyRealm;
    import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition;
    import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
    import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class ShiroConfig {
        @Autowired
        private MyRealm myRealm;
        @Bean
        public DefaultWebSecurityManager securityManager(){
            DefaultWebSecurityManager defaultWebSecurityManager=new DefaultWebSecurityManager();
            defaultWebSecurityManager.setRealm(myRealm);
            return defaultWebSecurityManager;
        }
    
        //自定义shiro过滤器
        public ShiroFilterChainDefinition filterChainDefinition(){
            DefaultShiroFilterChainDefinition filterChainDefinition=new DefaultShiroFilterChainDefinition();
            //代表的是这个路径不认证也可以访问
            filterChainDefinition.addPathDefinition("/login","anon");
    
            //代表的是除了上面这个可以放行,其他的必须认证之后才能放行
            filterChainDefinition.addPathDefinition("/**","authc");
            
            return filterChainDefinition;
        }
    }
    

      

    package com.aa.test.shiro;
    
    import com.aa.test.pojo.User;
    import com.aa.test.service.UserService;
    import org.apache.shiro.authc.AuthenticationException;
    import org.apache.shiro.authc.AuthenticationInfo;
    import org.apache.shiro.authc.AuthenticationToken;
    import org.apache.shiro.authc.SimpleAuthenticationInfo;
    import org.apache.shiro.authz.AuthorizationInfo;
    import org.apache.shiro.realm.AuthenticatingRealm;
    import org.apache.shiro.realm.AuthorizingRealm;
    import org.apache.shiro.subject.PrincipalCollection;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MyRealm extends AuthorizingRealm {
        @Autowired
        private UserService userService;
        //授权
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
            return null;
        }
    
        //认证
    
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
            //获取用户信息
            Object principal = token.getPrincipal();
            //根据用户名获取数据库中用户信息
            User user = userService.selUserInfoService((String) principal);
            if(user!=null){
                AuthenticationInfo info = new SimpleAuthenticationInfo(principal, user.getPwd(), user.getUname());
                return info;
            }
    
            return null;
        }
    }
    

      

      //使用shiro认证
        @RequestMapping("userLogin2")
        public String userLogin2(String uname,String pwd){
    
            Subject subject = SecurityUtils.getSubject();
            AuthenticationToken token = new UsernamePasswordToken(uname, pwd);
    
            try {
                subject.login(token);
                return "redirect:main";
            }catch (Exception e){
                e.printStackTrace();
    
            }
            return "redirect:login";
        }
    

      

  • 相关阅读:
    thinkphp url生成
    thinkphp url大小写
    thinkphp 伪静态
    thinkphp action参数绑定
    thinkphp 前置和后置操作
    thinkphp 控制器定义
    thingkphp 路由实例
    thinkphp 闭包支持
    thinkphp 静态路由
    thinkphp 正则路由
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14355521.html
Copyright © 2020-2023  润新知