4

カスタムAuthenticationSuccessHandlerがあります。

私がやりたいのは、onAuthenticationSuccessメソッド内にいくつかのセッションデータを設定することです。

セッションデータを保存するには、どのコントローラー内でも正常に機能するセッションスコープのBeanを使用します。

しかし、onAuthenticationSuccessメソッド内でそれを取得しようとすると、例外が発生します。

'scopedTarget.sessionData'という名前のBeanの作成中にエラーが発生しました:スコープ'session'は現在のスレッドに対してアクティブではありません。

私のコードは次のとおりです。

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
SessionData sessionData = context.getBean(SessionData.class);

何か案は?

4

1 に答える 1

6

セッションスコープを実装するために必要な状態を公開するリスナーを宣言することができます。

<listener>
  <listener-class>
      org.springframework.web.context.request.RequestContextListener
  </listener-class>
</listener>

デフォルトでは、その状態はによって公開されるDispatcherServletため、リクエストが入る前は利用できませんDispatcherServlet(Spring Securityフィルターなど)。

于 2011-03-24T14:02:30.030 に答える