pageContext.request.userPrincipal是否存储在会话中?我也可以获得密码吗?

时间:2016-02-06 17:34:48

标签: jsp servlets spring-security passwords userprincipal

我正在学习Spring安全性,据我所知,使用request.getUserPrincipal()我们可以访问名称,我们可以使用pageContext.request.userPrincipal.name获取名称,

这是我的代码(一切正常):

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page session="true"%>
<html>
    <body>
        <h5>Title : ${title}</h5>
        <h5>Message : ${message}</h5>


        <c:if test="${pageContext.request.userPrincipal.name != null}">
            <h2>Hi User : ${pageContext.request.userPrincipal.name}></h2> 
            <br>
        </c:if>

    </body>
</html>

我的问题是:

1)。从会话中检索到pageContext.request.userPrincipal.name上的名称吗?因为表格顶部有<%@page session="true"%>

2)。是否也可以检索密码?我的意思是pageContext.request.userPrincipal.password,如果不是我怎么能在表单中获取密码?

谢谢,我非常感谢您的帮助,让我了解这个框架,因为我没有足够的钱买一些弹簧书,我只是在互联网上使用一些教程,所以你的帮助将如此对我来说很重要。

1 个答案:

答案 0 :(得分:3)

  

是否从会话中检索到pageContext.request.userPrincipal.name上的此名称?

不,它是从session检索的,而不是从${pageContext.request.remoteUser} 检索的。但是,在安全框架下,安全框架可以将内部标识符存储在HTTP会话中。但这应该是你最不关心的问题。

顺便说一下,检索主要名称的方式更短。

<%@page session="false"%>

另见a.o. How to get login attributes from a servlet/jsp

  

因为&#;;&lt;%@ page session =&#34; true&#34;%&gt;在表单的顶部

这有不同的含义,并且已经是默认值。默认情况下,打开JSP时,如果尚未创建HTTP会话,它将隐式创建HTTP会话。在设计为无状态的页面中这可能是不可取的。然后,开发人员将使用{{1}}关闭隐式会话创建并将其留给servlet代码。另见a.o. Can I turn off the HttpSession in web.xml?

  

是否也可以检索密码?我的意思是像pageContext.request.userPrincipal.password,如果不是我怎么能在表单中获取密码?

根据问题的评论,我收集到您需要它才能验证登录信息。这毫无意义。如果登录无效,则首先没有登录用户。