【问题标题】:Getting Session Object in Tomcat Custom Realm在 Tomcat 自定义领域中获取会话对象
【发布时间】:2023-03-25 04:22:01
【问题描述】:

我正在使用带有 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() 方法似乎是唯一的地方。

【问题讨论】:

    标签: tomcat jdbcrealm


    【解决方案1】:

    我总是这样做的方式是使用Filter,它在身份验证完成后运行。如果HttpSession 包含用户令牌,那么我什么也不做并调用链。如果HttpSession 不包含该用户令牌,我将尽我所能使用请求中可用的Principal 设置会话(因为已经进行了身份验证)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2018-03-04
      相关资源
      最近更新 更多