我正在使用带有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()方法似乎只是这样做。
答案 0 :(得分:0)
我一直这样做的方式是使用Filter
在身份验证完成后运行。如果HttpSession
包含用户令牌,那么我什么都不做并调用链。如果HttpSession
不包含该用户令牌,我会使用请求中提供的Principal
来完成设置会话所需的一切(因为已经进行了身份验证)。
这听起来并不像真的需要成为身份验证(Realm)的一部分,所以将两者分开。