shiro 静态资源放行

本文介绍了Apache Shiro框架中如何配置过滤器来放行静态资源。重点讲解了 anon, authc, user, perms 和 role 过滤器的作用,并详细说明了通过yml配置文件和自定义Configuration类两种方式实现静态资源的访问控制。同时指出,Configuration配置类会优先加载yml配置的相应属性。" 79991354,7243104,使用Vue构建视频播放列表实战,"['前端开发', 'Vue', 'JavaScript', '数据传递', '组件化']

Shiro 内置过滤器,可以实现权限相关的拦截器
常用的过滤器:

  • anon:无需认证(登录)可以访问
  • authc:必须认证才可以访问
  • user:如果使用rememberMe的功能可以直接访问
  • perms:该资源必须得到资源权限才可以访问
  • role:该资源必须得到角色的权限才可以访问

放行静态资源的方式有两种:

  1. yml配置文件
shiro:
  hash-algorithm-name: md5
  hash-iterations: 2
  anon-urls:
    - 放行的静态资源1
    - 放行的静态资源2
  login-url: /index.html
  log-out-url: /login/logout*
#  authc-ulrs:
#    - 需要认证才能访问的静态资源
  1. 配置Configuration类
    @Bean(SHIRO_FILTER)
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
        // 设置安全管理器
        factoryBean.setSecurityManager(securityManager);
        // 设置未登陆的时要跳转的页面
        factoryBean.setLoginUrl(loginUrl);

        Map<String, String> filterChainDefinitionMap = new HashMap<>();
        // 设置放行的路径
        if (anonUrls != null && anonUrls.length > 0) {
            for (String anon : anonUrls) {
                filterChainDefinitionMap.put(anon, "anon");
            }
        }

        // 设置登出的路径
        if (null != logOutUrl) {
            filterChainDefinitionMap.put(logOutUrl, "logout");
        }

        // 设置拦截的路径
        if (authcUlrs != null && authcUlrs.length > 0) {
            for (String authc : authcUlrs) {
                filterChainDefinitionMap.put(authc, "authc");
            }
        }



        // 静态资源放行
        filterChainDefinitionMap.put("/static/**", "anon");
        filterChainDefinitionMap.put("/css/**","anon");
        filterChainDefinitionMap.put("/layui/**","anon");


        //配置过滤器
        factoryBean.setFilters(filters);
        factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return factoryBean;
    }

注意的是,Configuration配置类会先读取yml配置文件的相对应的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值