【发布时间】:2011-08-26 14:12:56
【问题描述】:
我有一个使用 struts2 和旧式 servlet 的 java-web-application。 使用 Acegi 安全性。
在我的 servlet 中,我正在记录用户正在尝试做什么以及它是哪个用户。使用request.getRemoteUser()获取用户即时消息
但令我大吃一惊的是,结果并不一致。大多数时候getRemoteUser() 返回正确的用户名,但每隔一段时间我就会得到一个空值。
这背后的原因是什么?
编辑:
根据您的反馈,我发现 servlet-url 根本不受安全保护。所以这可能导致getRemoteUser()为空。我现在将为这些实施安全性并在回发结果之前进行更多测试。
【问题讨论】:
-
根据JavaDoc“如果用户已通过身份验证,则返回发出此请求的用户的登录名,如果用户尚未通过身份验证,则返回null。是否与每个后续请求一起发送用户名取决于浏览器和身份验证类型。与 CGI 变量 REMOTE_USER 的值相同。”所以可能是 Acegi/Browser 没有按预期设置远程用户。
标签: java servlets struts2 spring-security