使用会话ID

时间:2017-12-20 06:25:06

标签: apache validation session shiro

我有一个由shiro安全框架生成的会话ID cookie,并在每个请求中传递。有没有办法验证会话ID对shiro有效。

我通过传递会话ID尝试使用以下代码。

 Subject requestedSubject = new Subject.Builder().sessionId(sessionId).buildSubject();
 return !(requestedSubject.getSession(false) == null);

获得以下异常

  

“exceptionClass”:“class java.lang.IllegalArgumentException”,   “RESTMethod”:“GET”,“message”:“SessionKey必须与HTTP兼容   实现。“,”rootCausePointClass“:   “org.apache.shiro.web.session.mgt.ServletContainerSessionManager”   “rootCausePointMethod”:“getSession”

我正在做的任何错误,或者是否有其他方法来验证会话ID。

1 个答案:

答案 0 :(得分:1)

你没有提供太多细节,你的确切问题有点不清楚。

Shiro管理会话和会话验证,这内置于框架中,您通常不需要关心shiro如何检查/验证会话的机制。

另一个问题不明确的是你的技术堆栈。它是一个Web应用程序吗?还有其他第三方库,比如Spring吗?但是这里是guide

请注意,会话(即使是有效会话)并不表示用户已登录或已通过身份验证。

从shiro获取当前用户:

Subject currentUser = SecurityUtils.getSubject();

然后你要检查这是否是"已知" user,检查是否存在非null主体:

User user = (User) currentUser.getPrincipal();

再一次,你的问题很模糊,但我希望这会引导你朝着正确的方向前进。