在 Tomcat 自定义领域中获取会话对象



我正在使用带有FORM身份验证的Tomcat领域。身份验证完成后,我想在会话中保存一个对象,但无法弄清楚如何获取会话。

import org.apache.catalina.realm.RealmBase;
public class MyRealm extends RealmBase {
    @Override
    public Principal authenticate(String username, String credentials) {
        // get session here
        return super.authenticate(username, credentials);
    }
原因是

我之前有一个登录 servlet,并且使用我自己的身份验证,现在我需要切换到 Tomcat Realm 并基本上将登录 servlet 代码迁移到我的自定义 Realm 类。登录成功后,我需要创建一个包含会话特定对象的对象并将其放入当前会话中。我需要用户名和密码来创建它,所以 authenticate(( 方法似乎只是这样做的地方。

我总是这样做的方式是在身份验证完成后运行Filter如果HttpSession包含用户令牌,那么我什么都不做并调用链。如果HttpSession不包含该用户令牌,我将执行所有需要执行的操作,以使用请求中可用的Principal设置会话(因为身份验证已经发生(。

听起来这并不需要成为身份验证(Realm(的一部分,因此请将两者分开。

相关内容

  • 没有找到相关文章

最新更新