Apache Shiro获取主题方法和Netty上下文

时间:2014-10-28 15:17:28

标签: multithreading netty shiro

Shiro文档说,

" Shiro通过自己的框架集成代码基于当前正在执行的Thread获取Subject数据,这是使用Shiro的首选方式"

如果Shiro从当前正在执行的线程中获取主题,并且Netty使用1个线程处理超过1个请求。那么,主题方法如何返回给定请求的主题信息?如果Shiro没有处理这种情况,我是否需要添加额外的机制来实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:0)

我不知道netty是如何工作的,但是如果你可以使用Filters配置它,shiro将确保在请求结束时清除threadlocal信息。

如果您不能使用过滤器,您可能会自行处理在线程上放置/删除主题的操作。

Shiro使用ThreadContext类: http://shiro.apache.org/static/1.2.3/apidocs/org/apache/shiro/util/ThreadContext.html

方法ThreadContext.bind(securityManager)和ThreadContext.bind(subject)是关键方法。线程完成后,调用ThreadCOntext.remove()。

如果您查看此页面,您会在单元测试期间看到正在运行的主题内容:http://shiro.apache.org/testing.html

相关问题