10

カスタム AuthenticationProvider 内で HttpServletRequest にアクセスするにはどうすればよいですか。私はこれをやってみました

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();

HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String username = (String) httpReq.getAttribute("j_username");

また

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest httpReq = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();

String username = (String) httpReq.getAttribute("j_username");

ユーザー名がnullになっています

しかし、RequestContextHolder.getRequestAttributes();戻りますnull

requestcontext を参照したり、渡したり、参照できるように Spring にマジックを実行させたりしたいと考えています。

また、web.xmlでRequestContextListenerを提供しています

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

セキュリティ フォーラムを検索しましたが、まだ何も見つかりませんでした。

前もって感謝します。

4

2 に答える 2

9

web.xmlにリスナーを追加したところ、RequestContextHolder.getRequestAttributes()がnullではなくRequestAttributesを返します。

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

ログインフォームをカスタマイズする場合は、このフィルターを拡張しない理由:org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

于 2013-02-04T12:29:19.733 に答える