2

拜托,我需要你的帮助。我有一个在 Tomcat 上运行的应用程序和一个 JAAS 模块。在 JAAS 之前,我使用了一个过滤器,以便从 httprequest 中获取一些参数。在这个过滤器中,我使用我的 jaas 登录名创建 LoginContext 并调用 login() 方法。一切顺利,提交返回 true,一切都很好。

我从会话中得到主题:

session.setAttribute("javax.security.auth.subject", subject); 

在这个主题中,我放置了创建的主体。问题是登录后,一切就像从未调用过此登录一样。然后用户没有通过身份验证,我变成了一个空白页。怎么了?

我猜 Tomcat 不接受我创建的登录上下文或类似的东西,但我能做些什么来解决这个问题?提前致谢!

4

1 回答 1

2

查看http://www.coderanch.com/t/466744/Servlets/java/Set-user-principal-filter。您可以在线程中看到:除非您通过容器提供的设施,否则通常不会填充请求的 getUserPrincipal() 和 isUserInRole()。

在您的情况下,您应该在链接中创建一个 RequestWrapper 并在 RequestWrapper 中设置用户。

于 2012-11-02T06:40:17.257 回答