0
点赞
收藏
分享

微信扫一扫

Shiro学习(3)shiroConfig配置类

盖码范 2022-03-30 阅读 34
java后端

一、Shiro配置类创建流程

创建shiro配置函数ShiroConfig可以分为四大块:
1、创建realm
2、创建安全管理器
3、配置shiro过滤器工厂
4、开启对shiro注解的支持

1、创建Realm

可以直接创建CustonRealm这个对象,也可以通过Realm创建。

	@Bean
    public Realm getRealm(){
        CustonRealm custonRealm = new CustonRealm();
        return custonRealm;
    }
2、创建安全管理器

注意SecurityManager导包,是shiro的SecurityManager。
配置原理:对SecurityManager来说他管理了所有的Realm,通过这些代码获取了Realm管理信息

	@Bean
    public SecurityManager getSecurityManager(Realm realm){
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(realm);
        return securityManager;
    }
3、配置shiro过滤器工厂

在web程序中,shiro进行权限控制是通过一组过滤器集合进行的操作。
过滤器配置需要有以下几步:
1、创建过滤器工厂
2、设置安全管理器
3、通用配置(跳转登录页面,为授权跳转的页面)
4、设置过滤器集合

	@Bean
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager){
        //1、创建过滤器工厂
        ShiroFilterFactoryBean filterFactory = new ShiroFilterFactoryBean();
        //2、设置安全管理器
        filterFactory.setSecurityManager(securityManager);
        //3、通用配置(跳转登录页面,为授权跳转的页面)
        filterFactory.setLoginUrl("/autherror?code=1");//授权成功,跳转的url地址
        filterFactory.setUnauthorizedUrl("/autherror?code=2");//未授权的跳转页面
        //4、设置过滤器集合
        /**
         * 设置所有过滤器,使用有顺序的map
         *  key->拦截url地址
         *  value-> 过滤器类型
         */
        Map<String,String> filterMap = new LinkedHashMap<>();
        filterMap.put("/user/home","anon");//无需认证即可访问
        filterMap.put("/user/**","authc");//当前请求地址必须认证后访问
        filterFactory.setFilterChainDefinitionMap(filterMap);
        return filterFactory;
    }
4、开启对shiro注解的支持

固定配置

	@Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
        AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
        advisor.setSecurityManager(securityManager);
        return advisor;
    }
举报

相关推荐

0 条评论