request.getRemoteUser() 有时返回 null
我有一个使用 struts2 与旧式 servlet 结合的 java-web-应用程序。 使用 Acegi 安全性。
在我的 servlet 中,我记录用户正在尝试执行的操作以及该用户是谁。要获取用户,我使用 request.getRemoteUser()
但令我惊讶的是,结果并不一致。大多数情况下,getRemoteUser()
返回正确的用户名,但每隔一段时间我就会得到一个空值。
这背后的原因可能是什么?
编辑: 根据您的反馈,我发现 servlet-url 根本不受安全保护。因此这可能会导致 getRemoteUser()
为空。我现在将为这些实施安全性,并在发回结果之前进行更多测试。
I have a java-web-application using struts2 combined with old-style servlets.
Using Acegi security.
In my servlets, I'm logging what the user is trying to do and which user it is. To get the user im using request.getRemoteUser()
But to my big supprise, the result is not consistent. Most of the times the getRemoteUser()
returns the correct username, but every once in a while i get a null-value.
What could be the reason behind this?
EDIT:
After your feedback i have figured out that the servlet-urls are not covered by security at all. So that could cause getRemoteUser()
to be null. I will now implement security for these and do some more testing before i post back the results.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
getRemoteUser()
将返回登录的用户,否则将返回 null。您使用哪种身份验证(带有基本/摘要的 Jaas 等)?
您是否在特定 URL(servlet)上看到此错误?在这种情况下,该 URL 可能有其他安全约束。
另一个原因是客户端(浏览器)没有随请求发送用户名。如果您位于请求身份验证的 URL 树之外,则可能会发生这种情况。
getRemoteUser()
will return the user logged in else it will return null.What kind of authentication are you using (Jaas with basic/digest, etc)?
Do you see this error for a particular URLs (servlets)? In that case that URL may have other security constraints.
Another reason would be the client (browser) is not sending the user name with the request. That can happen if you are outside the URL tree that asked for the authentication.
登录表单是否被 Acegi Security 过滤(AuthenticationProcessingFilterEntryPoint)?
如果是,则通过以下方式获取登录用户名
Did login form filter by Acegi Security (
loginFormUrl
of AuthenticationProcessingFilterEntryPoint) ?If yes, get the logged in username by
doc 说为什么你会变成空:
您需要调查导致问题的浏览器。
The doc says why you're getting null:
You need to investigate the browser that's causing the problem.