1

我正在使用带有 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 领域并将登录 servlet 代码基本上迁移到我的自定义领域类。登录成功后,我需要创建一个包含会话特定对象的对象并将其放入当前会话中。而且我需要用户名和密码来创建它,所以 authenticate() 方法似乎是唯一的地方。

4

1 回答 1

0

我总是这样做的方式是在身份验证完成Filter运行。如果包含用户令牌,那么我什么都不做并调用链。如果不包含该用户令牌,我会做所有我需要做的事情来使用请求中的可用对象来设置会话(因为已经进行了身份验证)。HttpSessionHttpSessionPrincipal

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

于 2013-07-18T14:55:11.507 回答