【问题标题】:getRemoteUser() returns null when authenticated user visits unprotected page当经过身份验证的用户访问未受保护的页面时,getRemoteUser() 返回 null
【发布时间】:2011-05-11 01:15:39
【问题描述】:

我有一个包含受保护页面和不受保护页面的 J2EE Web 应用程序。一旦我成功验证并访问了一个受保护的页面,我就会立即访问一个不受保护的页面。此时,getRemoteUser() 返回 null,就好像我从未进行过身份验证一样。这是关于 J2EE 安全性的预期行为吗?

我查看了 servlet 规范 (2.4) 和 J2EE 教程 (1.4) 的安全部分,但我还没有找到任何关于访问不受保护的资源是否应该保留用户的身份验证状态。

编辑:在呈现未受保护的页面之前,我正在对当前的 HttpServletRequest 对象调用 getRemoteUser()。

编辑:我还检查了 HttpServletRequest.getRemoteUser() 和 HttpServletRequest.getUserPrincipal() 的 JavaDoc,他们也没有评论这个问题。

【问题讨论】:

    标签: java security jakarta-ee servlets


    【解决方案1】:

    除非您使用 JAAS(例如:JOSSO),否则它属于 RFC-2617 HTTP Authentication: Basic and Digest Access Authentication

    然后它归结为客户端是否在请求中发送凭据。对于基本身份验证,这基于需要凭据的请求的 URI。当您访问树的该分支之外的路径时,除非遇到 401,否则不会发送凭据。

    所以,是的,我希望为空。

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多