shiro学习31-shiro的工具类-securityUtils

这个类更简单,只是提供当前线程的subject和应用中唯一的securityUtils。源码如下:

public static Subject getSubject() {
        Subject subject = ThreadContext.getSubject();
        if (subject == null) {
            subject = (new Subject.Builder()).buildSubject();
            ThreadContext.bind(subject);
        }
        return subject;
}

 

从之前的源码中我们知道了每一次访问都会重新建立subject然后绑定到当前线程,所以这个就很简单了,因为当前线程中获得subject不会是null。只有在没有配置shirofilter的应用中才会出现当前线程中subject==null的情况。

 

同样的情况适用于securityManager,也是从当前线程中获取。securityManager是在绑定subejct到当前线程的时候顺便绑定的,以为securityManager是构成subject的元素之一。

相关推荐