gpt4 book ai didi

java - 如何在 Tomcat 中保留主体信息(即 setPrincipal?)

转载 作者:行者123 更新时间:2023-11-28 23:47:32 25 4
gpt4 key购买 nike

我正在尝试构建第二种用户登录方式以及 tomcat 领域功能。这意味着未经身份验证的用户可以:
1.唤起领域签到
2. 提供有效 token 并自动登录

我正在尝试实现 2。所以我使用过滤器将请求重定向到包装器中。在该包装器内,我覆盖了 getUserPrincipal 以便可以为该用户创建主体。然后容器会识别主体并让用户进入而不重定向到登录页面。

然而现在的问题是:似乎并不是所有的请求都会得到正确的委托(delegate)人。关于 servlet 的请求以及 servlet 是否使用 Dispatcher 转发请求将获得主体集。使用 sendRedirect 的简单链接或 servlet 不会调用 getUserPrincipal 方法,因此即使用户使用方法 2 登录,也会出现登录页面。

这就像为该用户创建的主体是“临时的”一样。我想知道是否有一种方法可以将主体存储在 session 中或某个地方,以便容器知道用户已通过身份验证。

最佳答案

我已经完全做到了这一点,但我是通过使用 Tomcat JAAS 领域并提供两个登录模块来做到这一点的,一个用于票证,一个用于用户名/密码。它需要一些集成来防止在票证登录时获得登录页面。实际上在我的系统中有第三种登录方法,通过有效的客户端证书,还有第四种登录模块,为用户查找和分配角色,但是他是由前三个模块之一建立的。

我参与了一个名为 AuthenticRoast 的 Google Code 项目,在这方面有所帮助。与 Tomcat 6 和 7 以及 Glassfish 集成,尽管我还没有尝试过。

关于java - 如何在 Tomcat 中保留主体信息(即 setPrincipal?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com