2

私は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フォームでパスワードを取得するにはどうすればよいですか?

スプリングの本を買うお金がないので、このフレームワークを理解するためにあなたの助けを本当に感謝しています.

4

1 に答える 1

3

この名前は pageContext.request.userPrincipal.name でセッションから取得されていますか?

requestいいえ、 からではなく から取得されますsession。ただし、内部では、セキュリティ フレームワークが内部識別子を HTTP セッションに格納する場合があります。しかし、これはあなたの最も心配すべきことではありません。

ちなみに、プリンシパル名を取得するためのより短い方法があります。

${pageContext.request.remoteUser}

aoサーブレット/jsp からログイン属性を取得する方法も参照してください。


フォームの上部に <%@page session="true"%> があるため

これには別の意味があり、すでにデフォルトになっています。デフォルトでは、JSP を開くと、HTTP セッションがまだ作成されていない場合は暗黙的に作成されます。これは、ステートレスになるように設計されたページでは望ましくない場合があります。開発者は、<%@page session="false"%>暗黙的なセッション作成をオフにして、サーブレット コードに任せます。ao も参照してください。web.xml で HttpSession をオフにすることはできますか?


パスワードも取得できますか?フォームでパスワードを取得するにはどうすればよいでしょうか?

質問のコメントに基づいて、ログインを検証するために必要であることがわかりました。これは意味がありません。ログインが有効でない場合、そもそもログインしているユーザーは存在しません。

于 2016-02-06T20:19:20.060 に答える