我正在尝试构建第二种用户登录方式以及tomcat领域功能。这意味着未经身份验证的用户可以:
1. 通过调用领域
登录 2. 提供有效令牌并自动登录
我正在尝试实现 2。所以我使用过滤器将请求重定向到包装器中。在该包装器中,我覆盖了,getUserPrincipal
以便可以创建该用户的主体。然后容器将识别主体并让用户进入而不重定向到登录页面。
但是现在的问题是:似乎并非所有请求都会获得正确的主体。关于 servlet 的请求以及 servlet 是否Dispatcher
用于转发请求将获得主体集。使用简单链接或 servletsendRedirect
不会调用该getUserPrincipal
方法,因此即使用户使用方法 2 登录也会出现登录页面。
这就像为该用户创建的主体是“临时的”。我想知道是否有办法将主体存储在会话中或某处,以便容器知道用户已通过身份验证。