0

残りの Web サービスは Spring Security で保護されています。さまざまなハンドラーを介して適切な応答 (失敗の場合は 401、成功の場合は 200 など) を返しています。クライアントは資格情報をデバイスに保存したくないため、各要求のヘッダーに資格情報を渡すことによって、真の安らかな要求ごとの認証を行うことはできません。そこで、Remember-me を使用して Persistant Token Approach をセットアップしようとしています。

db テーブルがすべてセットアップされ、ログインできるようになりました。ログインは、シリーズとトークンの値を含むデータベースのpersistent_loginsテーブルに行を作成します。

私の問題は2つあります:

  1. ユーザーに 200 応答を返し、トークンも返すようにする successHandler クラスに何を追加する必要がありますか (シリーズ値も必要ですか?)。
  2. curl でテストする場合、このトークンをヘッダーに設定するにはどうすればよいですか?

これが私の successHandler クラスです:

public class RestAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler{

@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
                                    Authentication authentication) throws ServletException, IOException {
    response.setStatus(HttpServletResponse.SC_OK);
    clearAuthenticationAttributes(request);
}
}  

事前にすべての助けに感謝します!

4

1 に答える 1

2

は、エンコードされたシリーズとトークン値を含むPersistentTokenBasedRememberMeServices応答 (デフォルト) に Cookie を確実に設定するSPRING_SECURITY_REMEMBER_ME_COOKIEため、そのための認証成功ハンドラーに追加のコードは必要ありません。curl でテストする場合、この Cookie を送り返すだけで済みます。

応答にこの Cookie が表示されない場合は、ログイン要求に_spring_security_remember_me=true、クライアントが実際に記憶機能を要求したことを示すパラメーターが含まれているかどうかを確認するか、デフォルトで false であるのalwaysRememberプロパティを構成します。PersistentTokenBasedRememberMeServices

于 2013-02-22T13:08:48.407 に答える