2 biaolan biaolan 于 2016.05.03 17:28 提问

shiro DefaultSecurityManager Subject登录

用DefaultSecurityManager做一个JavaSE的登录和session管理服务, 在用DefaultSecurityManager获取Subject用多个token登录的时候,会出现相同session,我看了一下源码,获取Subject的时候是从ThreadContext.getSubject()获取以前用过的,也就是后面登录的每次产生新的Subject而是去拿的以前的Subject

这个有什么方式可以解决么

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
shiro相同subject重复登录问题
刚学shiro不久,在相同的subject重复登录时,也就是登陆成功的subject再次登录时出现空指针异常.出现的位置是处理登陆失败的controller方法. 我往前追溯发现是shiro的filter在认证的时候是先通过isAceessAllowed()方法的实现进行判断是否已经登录认证的 而这个isAceessAllowed()方法的实现如下,其实是调用了当前subject的一个isAu
Shiro使用和源码分析---5
getSubject分析上一章看完了DefaultWebSecurityManager的构造函数,首先来分析getSubject函数。getSubject定义在AccessControlFilter中。getSubject protected Subject getSubject(ServletRequest request, ServletResponse response) {
2.详解SecurityManager(shiro权限管理门面)
SecurityManager 接口主要作用 为什么要先说SecurityManager呢?因为我觉得他是shiro的主要入口,几乎所有相关的权限操作,都由他代理了。 1.可以说是所有配置的入口,简化配置,方便使用。 2.一个接口就可以实现,验证的操作(登录、退出)、授权(授权访问指定资源、角色)、Session管理,相当于这些操作的门面(门面模式,也叫外观模式)。从上图我们可以看出Secur
Shiro使用和源码分析---4
DefaultWebSecurityManager源码分析 本章开始研究shiro框架的大心脏SecurityManager,这里已DefaultWebSecurityManager为例来分析。 先看一下DefaultWebSecurityManager的继承关系 public class DefaultWebSecurityManager extends DefaultSecurity
Shiro基础知识02----shiro身份验证(HelloWorld,Subject,Reaml(自定义reaml)),Authenticator及AuthenticationStrategy
一、HelloWorld 本文使用Maven,配置jar请找其他相关文件 1、首先准备一些用户身份/凭据(shiroHelloWorld.ini) [users] Tom=123456 jack=123此处使用ini配置文件,通过[users]指定了两个主体:Tom/123456、jack/123。 2、测试用例 //该文件在后面会经常使用 private S
shiro中获取当前user出错
准确场景描述应该是: 1、在应用层使用“线程池等会缓存线程的组件”,比如Executors.newFixedThreadPool(n);在线程里进行 getUser(); 2、可能A用户获取到B用户。 下面分析一下原理: 顺着shiro源码去找,获取当前用户方法SecurityUtils.getSubject();/*ThreadContext线程上下文环境,主要靠InheritableT
shiro实现基于机构加用户名的验证以及rememberMe
一、Shiro的一些经验与rememberMe实现原理 Shiro的登录(Authorization)和验权(Authentication),默认都是根据用户名UserName来做验证和授权的。 登录用的是UsernamePasswordToken用户名密码对,验权用的是PrincipalCollection身份集合(默认是用户名和Realm名称),有一个统一的入口就是Subject(表示一个
shiro中获得当前subject的所有角色,权限列表
两种方法:1.首先我们注入自定义的realm shiroDbRealm.doGetAuthorizationInfo(SecurityUtils.getSubject().getPrincipals()) 从新执行一遍doGetAuthorizationInfo这里面是自己写的,能获取到。2.realm 中写一方法核心语句AuthorizationInfo authorizationInfo1 =...
Shiro 2 Subject的创建
SecurityUtils中 public static Subject getSubject() { Subject subject = ThreadContext.getSubject(); if (subject == null) { subject = (new Subject.Builder()).buildSubject();
Shiro源码分析 -- Subject.isPermitted(permission)已登陆用户判断是否具有某权限
这行代码用来判断已登陆用户是否具有某权限 subject.isPermitted(permission.getPermission());假设登陆用户已有权限:system 我们需要判断的权限:    system:role:add 问题在于,此时shiro会判断用户具有system:role:add权限。 通过单步跟踪找到: WildcardPermission.impli