是否可以从RealmBase.athenticate方法访问会话ID?我需要从我的自定义领域类中获取它,以便将与会话关联的其他信息存储到数据库中,并在以下请求期间检索它。我正在使用Tomcat 8。谢谢!
No.
身份验证不需要使用会话,因此不会将其烘焙到 API 中。身份验证也应该与会话管理分开,因此它也没有嵌入到 API 中。
您可能仍然可以这样做,但这需要一些技巧。
- 编写一个使用包含请求对象的
ThreadLocal
的 Valve。 - 在阀链中的
AuthenticationValve
之前注册阀门。 - 在该 Valve 中,将用户的请求塞入
ThreadLocal
,然后向下调用链。 - 在自定义
Realm
中,从ThreadLocal
获取对象。 - 永远记住在调用链返回后从
ThreadLocal
中删除请求......即使引发异常。