jeecg-boot的shiro认证过程

  1. shrio配置

说明:

  • 首先配置一系列拦截的路径
  • 配置jwtfilter 继承AuthenticatingFilter 作后面的接口登录验证
  • 自定义realm
  • 实例化常规bean

 

 

  1. package com.hnlrkj.talentgift.config.shiro;

    import
    com.hnlrkj.talentgift.config.shiro.filters.CustomShiroFilterFactoryBean;
    import
    com.hnlrkj.talentgift.config.shiro.filters.JwtFilter;
    import
    com.hnlrkj.talentgift.common.constant.CommonConstant;
    import
    com.hnlrkj.talentgift.common.util.oConvertUtils;
    import
    lombok.extern.slf4j.Slf4j;
    import
    org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
    import
    org.apache.shiro.mgt.DefaultSubjectDAO;
    import
    org.apache.shiro.mgt.SecurityManager;
    import
    org.apache.shiro.spring.LifecycleBeanPostProcessor;
    import
    org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
    import
    org.apache.shiro.spring.web.ShiroFilterFactoryBean;
    import
    org.apache.shiro.web.mgt.DefaultWebSecurityManager;
    import
    org.crazycake.shiro.IRedisManager;
    import
    org.crazycake.shiro.RedisCacheManager;
    import
    org.crazycake.shiro.RedisClusterManager;
    import
    org.crazycake.shiro.RedisManager;

    import
    org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
    import
    org.springframework.beans.factory.annotation.Autowired;
    import
    org.springframework.beans.factory.annotation.Value;
    import
    org.springframework.context.annotation.Bean;
    import
    org.springframework.context.annotation.Configuration;
    import
    org.springframework.context.annotation.DependsOn;
    import
    org.springframework.core.env.Environment;
    import
    org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
    import
    org.springframework.util.StringUtils;
    import
    redis.clients.jedis.HostAndPort;
    import
    redis.clients.jedis.JedisCluster;

    import
    javax.annotation.Resource;
    import
    javax.servlet.Filter;
    import
    java.util.*;

    /**
     * @author:
     
    * @date:
     
    * @description: shiro
    配置类
     
    */

    @Slf4j
    @Configuration

    public class ShiroConfig {

       
    @Value("${talentgift.shiro.excludeUrls}")
       
    private String excludeUrls;
       
    @Resource
       
    LettuceConnectionFactory lettuceConnectionFactory;
       
    @Autowired
       
    private Environment env;


       
    /**
         * Filter Chain
    定义说明
        
    *
         * 1
    、一个URL可以配置多个Filter,使用逗号分隔
        
    * 2、当设置多个过滤器时,全部验证通过,才视为通过
        
    * 3、部分过滤器可指定参数,如permsroles
         */
       
    @Bean("shiroFilter")
       
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
            CustomShiroFilterFactoryBean shiroFilterFactoryBean =
    new CustomShiroFilterFactoryBean();
           
    shiroFilterFactoryBean.setSecurityManager(securityManager);
           
    // 拦截器
           
    Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
            if
    (oConvertUtils.isNotEmpty(excludeUrls)){
                String[] permissionUrl =
    excludeUrls.split(",");
                for
    (String url : permissionUrl){
                    filterChainDefinitionMap.put(url
    ,"anon");
               
    }
            }

           
    // 配置不会被拦截的链接 顺序判断
           
    filterChainDefinitionMap.put("/sys/cas/client/validateLogin", "anon"); //cas验证登录
           
    filterChainDefinitionMap.put("/sys/randomImage/**", "anon"); //登录验证码接口排除
           
    filterChainDefinitionMap.put("/sys/checkCaptcha", "anon"); //登录验证码接口排除
           
    filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
           
    filterChainDefinitionMap.put("/sys/mLogin", "anon"); //登录接口排除
           
    filterChainDefinitionMap.put("/sys/logout", "anon"); //登出接口排除
           
    filterChainDefinitionMap.put("/sys/thirdLogin/**", "anon"); //第三方登录
           
    filterChainDefinitionMap.put("/sys/getEncryptedString", "anon"); //获取加密串
           
    filterChainDefinitionMap.put("/sys/sms", "anon");//短信验证码
           
    filterChainDefinitionMap.put("/sys/phoneLogin", "anon");//手机登录
           
    filterChainDefinitionMap.put("/sys/user/checkOnlyUser", "anon");//校验用户是否存在
           
    filterChainDefinitionMap.put("/sys/user/register", "anon");//用户注册
           
    filterChainDefinitionMap.put("/sys/user/querySysUser", "anon");//根据手机号获取用户信息
           
    filterChainDefinitionMap.put("/sys/user/phoneVerification", "anon");//用户忘记密码验证手机号
           
    filterChainDefinitionMap.put("/sys/user/passwordChange", "anon");//用户更改密码
           
    filterChainDefinitionMap.put("/auth/2step-code", "anon");//登录验证码
           
    filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token
           
    filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
           
    filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
           
    filterChainDefinitionMap.put("/", "anon");
           
    filterChainDefinitionMap.put("/doc.html", "anon");
           
    filterChainDefinitionMap.put("/**/*.js", "anon");
           
    filterChainDefinitionMap.put("/**/*.css", "anon");
           
    filterChainDefinitionMap.put("/**/*.html", "anon");
           
    filterChainDefinitionMap.put("/**/*.svg", "anon");
           
    filterChainDefinitionMap.put("/**/*.pdf", "anon");
           
    filterChainDefinitionMap.put("/**/*.jpg", "anon");
           
    filterChainDefinitionMap.put("/**/*.png", "anon");
           
    filterChainDefinitionMap.put("/**/*.ico", "anon");

           
    filterChainDefinitionMap.put("/**/*.ttf", "anon");
           
    filterChainDefinitionMap.put("/**/*.woff", "anon");
           
    filterChainDefinitionMap.put("/**/*.woff2", "anon");

           
    filterChainDefinitionMap.put("/druid/**", "anon");
           
    filterChainDefinitionMap.put("/swagger-ui.html", "anon");
           
    filterChainDefinitionMap.put("/swagger**/**", "anon");
           
    filterChainDefinitionMap.put("/webjars/**", "anon");
           
    filterChainDefinitionMap.put("/v2/**", "anon");

           
    //积木报表排除
           
    filterChainDefinitionMap.put("/jmreport/**", "anon");
           
    filterChainDefinitionMap.put("/**/*.js.map", "anon");
           
    filterChainDefinitionMap.put("/**/*.css.map", "anon");
           
    //大屏设计器排除
           
    filterChainDefinitionMap.put("/bigscreen/**", "anon");

           
    //测试示例
           
    filterChainDefinitionMap.put("/test/bigScreen/**", "anon"); //大屏模板例子
           
    //filterChainDefinitionMap.put("/test/jeecgDemo/rabbitMqClientTest/**", "anon"); //MQ测试
           
    //filterChainDefinitionMap.put("/test/jeecgDemo/html", "anon"); //模板页面
           
    //filterChainDefinitionMap.put("/test/jeecgDemo/redis/**", "anon"); //redis测试

           
    //websocket排除
           
    filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告
           
    filterChainDefinitionMap.put("/newsWebsocket/**", "anon");//CMS模块
           
    filterChainDefinitionMap.put("/vxeSocket/**", "anon");//JVxeTable无痕刷新示例
           
    filterChainDefinitionMap.put("/eoaSocket/**","anon");//我的聊天

           
    //性能监控  TODO 存在安全漏洞泄露TOEKNdurid连接池也有)
           
    filterChainDefinitionMap.put("/actuator/**", "anon");

           
    // 添加自己的过滤器并且取名为jwt
           
    Map<String, Filter> filterMap = new HashMap<String, Filte
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值