shiro源码跟踪之ShiroFilterFactoryBean

之前总是用现成的框架,虽然大体上看得明白,但是细节上还是掌握的不够,于是用idea新建了个springboot的工程

从头开始瞧一瞧这些代码,以便在实际写的时候生熟,今天是配置springboot+shiro

shiro的使用也是基于开源框架的使用才开始知道的,之前只知道spring security,但是那个比较复杂,各种bean的配置没有一个比较一个清晰的思路,于是从这个比较小点的shiro开始练手。

因为是基于springboot,所以直接写个配置类添加@configuration就行了,里面注解一个

@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(){
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    shiroFilterFactoryBean.setLoginUrl("/login");
    shiroFilterFactoryBean.setSuccessUrl("/index");
    shiroFilterFactoryBean.setUnauthorizedUrl("/unauth");
    LinkedHashMap<String,String> filterChainDefinitionMap = new LinkedHashMap<>();
    filterChainDefinitionMap.put("/login","anon");
    filterChainDefinitionMap.put("/**", "user");
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
    shiroFilterFactoryBean.setSecurityManager(securityManager());
    return shiroFilterFactoryBean;
}

虽然知道这个ShiroFilterFactoryBean实现了spring的接口,但是没有仔细研究为啥要这样,这个问问先放放

ShiroFilterFactoryBean 是shiro的一个类,他绝对是要用户给它配置些什么,然后供它使用,

shiroFilterFactoryBean.setLoginUrl("/login"); shiroFilterFactoryBean.setSuccessUrl("/index"); shiroFilterFactoryBean.setUnauthorizedUrl("/unauth");

这三个看名字也基本上就能猜到是什么意思了,分别是 登陆的路径 登陆成功后跳转路径 访问未授权的需要跳转到的路径

之前一直不明白anon,user这些是从哪里来的,后来debug过源码才知道,这些事初始化的时候配置上的,都是Filter,

这些东西都在这个类中配置的存着,这些Filter又是在哪实例化的呢?

他这个实例化是在ShiroFilterFactoryBean类中

红框中的方法就是初始化

DefaultFilterChainManager类及添加Filter的地方

整个过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半块橘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值