zoukankan      html  css  js  c++  java
  • shiro的subject创建和session的创建

    在我的这篇博客中已经介绍了shiro的启动过程

    这次,我们来看看shiro的subject创建和session的创建。

    真正执行过滤器的filter是SpringShiroFilter。SpringShiroFilter是ShiroFilterFactoryBean的内部类。

     过滤器拦截匹配的url后,进入到doFilter()方法。这里看OncePerRequestFilter类中的doFilter()方法。

    看doFilterInternal()这里是抽象方法,在AbstractShiroFilter这个类中有具体实现。在此方法中createSubject()方法中,创建了subject。在execute()方法中,另起一个线程将subject绑定到ThreadLocal线程上。这些绑定,解绑的操作都由ThreadContext这个对象来完成。事实上,绑定在ThreadLocal上的是一个Map<Object,Object>对象,map里面放的就是subject和securityManager。

     

     进入到execute()方法里面看看。在execute()方法上,使用 lambda表达式申明一个匿名内部类,作为型参传递到方法里面。然后通过associateWith(callable)方法构造一个SubjectCallable对象。然后在execute()方法里面执行call方法,另起一个线程执行。

     

     这样另起一个线程就会执行SubjectCallable对象的call()方法。在call()方法里面调用threadState.bind()绑定subject,然后在执行匿名内部类的call()方法。

  • 相关阅读:
    《驱动学习
    《海思3521D
    《uboot网卡驱动分析》
    《驱动学习
    《驱动学习
    《驱动学习
    对应第一篇文章api的编写
    Dot模板的使用小结2
    项目代码摘抄,dot的用法之1
    文字的默认基线是底部对齐的
  • 原文地址:https://www.cnblogs.com/step-and-step/p/13338124.html
Copyright © 2011-2022 走看看