Shiro学习(3)shiroConfig配置类

一、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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值