我有一个使用 struts2 和旧式 servlet 的 java-web-application。
使用 Acegi 安全性。

在我的 servlet 中,我记录了用户正在尝试做什么以及它是哪个用户。使用 request.getRemoteUser() 获取用户 im

但令我大吃一惊的是,结果并不一致。大多数时候 getRemoteUser() 返回正确的用户名,但每隔一段时间我都会得到一个空值。

这背后的原因可能是什么?

编辑:
在您的反馈之后,我发现 servlet-url 根本不受安全保护。所以这可能导致 getRemoteUser() 为空。我现在将为这些实现安全性,并在我发回结果之前做一些更多的测试。

最佳答案

登录表单 是否由 Acegi Security 过滤( AuthenticationProcessingFilterEntryPoint loginFormUrl)?

如果是,请通过以下方式获取登录用户名

SecurityContextHolder.getContext().getAuthentication().getName();

关于java - request.getRemoteUser() 有时返回 null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7205977/

10-11 02:26