我有一个J2EE Web应用程序,包含受保护的页面和不受保护的页面。成功验证并访问受保护的页面后,我立即访问了一个未受保护的页面。此时,getRemoteUser()返回null,就像我从未进行过身份验证一样。这是关于J2EE安全性的预期行为吗?
我已经看了servlet规范(2.4)和J2EE教程(1.4)的安全性部分,我无法找到任何关于访问不受保护的资源是否应该保留用户的评论。身份验证状态。
编辑:我在呈现未受保护的页面之前立即在当前的HttpServletRequest对象上调用getRemoteUser()。
编辑:我还检查了JavaDoc for HttpServletRequest.getRemoteUser()和HttpServletRequest.getUserPrincipal(),他们也没有对此问题发表评论。
答案 0 :(得分:4)
除非您使用的是JAAS(例如:JOSSO),否则它属于RFC-2617 HTTP Authentication: Basic and Digest Access Authentication。
然后归结为客户端是否发送带有请求的凭据。对于基本身份验证,它基于需要凭据的请求的URI。当您访问树的该分支之外的路径时,除非遇到401,否则不会发送凭据。
所以,是的,我期待一个null。