1

Spring Security 3.0.5 の機能「Remember-Me」を使用し、jsp ページでユーザーの詳細にアクセスしようとしました。

public class UserDetailsImpl implements UserDetails, Serializable

いくつかの追加の属性 (画像の URL、フルネームなど) があります。を使用してこれらの属性にアクセスすると

<sec:authentication property="details.pic"/>

通常のログイン後 (remember me 機能が作動しない場合)、すべて正常に動作します。
しかし、ブラウザーを閉じて保護されたページを再度開くと、記憶機能は詳細オブジェクトではなく別のオブジェクトを返します。

どうすればこれを修正できますか? それとも、2つの異なるケースを扱うべきですか?

ありがとうございました。

後で編集: 私は自分のjspにこれを持っていました:

<sec:authorize access="isRememberMe()">
    <c:set var="user" value="${pageContext.request.userPrincipal.principal}" />
</sec:authorize>
<sec:authorize access="isFullyAuthenticated()">
    <c:set var="user" value="${pageContext.request.userPrincipal.details}" />
</sec:authorize>

それは仕事をしますが、私はそのアプローチがあまり好きではありません..

4

2 に答える 2

1
<sec:authorize access="isRememberMe()">
    <c:set var="user" value="${pageContext.request.userPrincipal.principal}" />
</sec:authorize>
<sec:authorize access="isFullyAuthenticated()">
    <c:set var="user" value="${pageContext.request.userPrincipal.details}" />
</sec:authorize>
于 2011-08-30T14:39:41.693 に答える
0

UserDetailsS​​ervice.loadByUsername() が呼び出されていることを確認します。そうでない場合は、processAutoLoginCookie() (使用しているサービスに応じて PersistentTokenBasedRememberMeServices または TokenBasedRememberMeServices のいずれか) にブレークポイントを設定し、それをステップ実行して何が起こっているかを確認します。

于 2011-08-24T13:55:49.817 に答える