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

时间:2013-07-16 18:21:18

标签: tomcat jdbcrealm

我正在使用带有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代码迁移到我的自定义领域类。登录成功后,我需要创建一个对象,该对象保存会话特定对象并将其放在当前会话中。我需要用户名和&密码来创建它所以authenticate()方法似乎只是这样做。

1 个答案:

答案 0 :(得分:0)

我一直这样做的方式是使用Filter在身份验证完成后运行。如果HttpSession包含用户令牌,那么我什么都不做并调用链。如果HttpSession不包含该用户令牌,我会使用请求中提供的Principal来完成设置会话所需的一切(因为已经进行了身份验证)。

这听起来并不像真的需要成为身份验证(Realm)的一部分,所以将两者分开。