springboot下的shiro配置类需要干什么?

shiro配置类主类,shiroconfig.java

(1)配置shiro过滤器工厂ShiroFilterFactoryBean

创建过滤器工厂

注入安全管理器

通用配置(跳转登录页面,为授权跳转的页面)

设置过滤器集合

// 配置shiro过滤器工厂ShiroFilterFactoryBean
    @Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
        //创建shiro的过滤器工厂
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        //注入安全管理器(必须有)
        shiroFilterFactoryBean.setSecurityManager(securityManager);
       
//通用配置
//身份认证失败,跳转到login.jsp页面(默认,可修改)
        shiroFilterFactoryBean.setLoginUrl("/login.jsp");
//身份认证失败,跳转到指定页面(默认不跳转)
shiroFilterFactoryBean.setUnauthorizedUrl("/error");
//登陆成功,跳转到指定页面
shiroFilterFactoryBean.setSuccessUrl("/index");


        //设置过滤器集合(匿名访问、认证访问等)
        Map<String, String> map = new HashMap<String, String>();
        map.put("/user/login", "anon");//anon 设置为公共资源  放行资源放在下面
        map.put("/user/register", "anon");//anon 设置为公共资源  放行资源放在下面
        map.put("/register.jsp", "anon");//anon 设置为公共资源  放行资源放在下面
        map.put("/**", "authc");//authc 所有请求资源需要认证和授权
         shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
        return shiroFilterFactoryBean;
    }

(2)创建安全管理器对象DefaultWebSecurityManager

创建安全管理器

管理realm(注入自定义realm对象)、管理seesionManger(注入自定义seesionManger对象)

@Bean
public DefaultWebSecurityManager getSecurityManager(Realm realm,SessionManager sessionManager) {
   //创建安全管理器
    DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
    //注入自定义realm
    defaultWebSecurityManager.setRealm(realm);
    //注入自定义SessionManager
    defaultWebSecurityManager.setSessionManager(sessionManager);
    return defaultWebSecurityManager;
}


(3)创建自定义realm对象xxxRealm
创建自定义realm对象xxxRealm(名字是自己定义的)
修改凭证校验匹配器
开启缓存
@Bean
public Realm getRealm() {
//创建自定义realm对象
    CustomerRealm customerRealm = new CustomerRealm();
    //修改凭证校验匹配器
    HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
    //设置加密算法为md5
    credentialsMatcher.setHashAlgorithmName("MD5");
    //设置散列次数
    credentialsMatcher.setHashIterations(1024);
    customerRealm.setCredentialsMatcher(credentialsMatcher);

    //开启全局缓存
    customerRealm.setCachingEnabled(true);
    //开启认证的缓存
    customerRealm.setAuthenticationCachingEnabled(true);
    //开启授权的缓存
    customerRealm.setAuthorizationCachingEnabled(true);
    //开启缓存管理器使用shiro的EhCacheManger
    customerRealm.setCacheManager(new EhCacheManager());
    //给授权缓存命名
    customerRealm.setAuthorizationCacheName("授权缓存");
    //给认证缓存命名
    customerRealm.setAuthenticationCacheName("认证缓存");
    return customerRealm;
}
(4)创建会话管理器对象xxxDefaultWebSessionManager
创建自定义对象xxxDefaultWebSessionManager名字是自己定义的)
注入自定义SessionDAO对象
@Bean
public SessionManager sessionManager(RedisSessionDAO redisSessionDAO){
    //创建自定义的缓存管理器对象
    MyDefaultWebSessionManager sessionManager = new MyDefaultWebSessionManager();
   //注入自定义的SessionDAO
    sessionManager.setSessionDAO(redisSessionDAO);
    return sessionManager;
}
(5)创建自定义SessionDAO对象
@Bean

public RedisSessionDAO redisSessionDAO(){

    RedisSessionDAO redisSessionDAO = new RedisSessionDAO();

    return redisSessionDAO;

}
(6)开启对shiro注解的支持
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
    AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
    advisor.setSecurityManager(securityManager);
    return advisor;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值