我有一个使用 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/