質問

既存のアプリケーションをAcegi / Springセキュリティとインターフェイスさせる必要があります。

始めるために、1つの簡単な情報を探しています。このコンテキストでは、アプリケーションから呼び出されるHttpServletRequest.getUserPrincipal()は、Spring固有のオブジェクトを使用するのではなく、Springを通じて取得したユーザー名を適切に返しますか?これに関して矛盾する情報をGoogleで検索しました。

Acegiにフィルターが実装されている場合、サーブレットAPIのgetUserPrincipal()をオーバーロードできると思いますか?

補助的な質問:デフォルトでこれが当てはまらない場合、オンにする方法はありますか?

ありがとう、

-Erik

役に立ちましたか?

解決

前のユーザーが答えを持っているので、春のセキュリティはgetUserPrincipalとisUserInRoleをサポートしています。これが、春のセキュリティの仕組みです。

スプリングを設定すると、次のフィルターをロードできます:

http:// static。 springframework.org/spring-security/site/reference/html/ns-config.html#filter-stack

標準のフィルター構成の一部として、 SecurityContextHolderAwareRequestFilter フィルターがロードされます。

フィルターの検査@ https://fisheye.springsource.org/browse/spring-security/tags/spring-security-parent-2.0.4/core/ src / main / java / org / springframework / security / wrapper / SecurityContextHolderAwareRequestFilter.java?r = 2514

HttpServletRequest オブジェクトをラップして、 HttpServletRequest を実装する HttpServletRequestWrapper を拡張する SecurityContextHolderAwareRequestWrapper クラスに変更することがわかります。 >そして、標準のServlet Filter doFilterチェーンにフィードバックします。 Spring Securityフィルターは最初のフィルターとして 構成する必要があるため、以降のすべてのクラスでは、代わりに SecurityContextHolderAwareRequestWrapper が表示されます。これには、このフィルターの背後にあるJSPページまたはサーブレットが含まれます。

JSPページ、サーブレット、またはこのフィルターの背後にあるフレームワークから isUserInRole または getUserPrincipal を呼び出すと、 HttpServletRequest Spring Securityからの実装。

他のヒント

セキュリティフィルターを使用する場合、はい。これがデフォルトの動作だと思います。

どのクラスを取得するかは設定によって異なりますが、それらはすべて、Spring独自のorg.springframework.security.Authenticationインターフェースを介してプリンシパルインターフェースを実装します。

Springアプリケーションでrequest.getUserPrincipal()およびrequest.isUserInRole()を使用しましたが、JSP内でもシームレスに動作します。

Spring Securityは、この情報をリクエストではなくSecurityContextに保存すると考えています。この情報をリクエストに追加するように設定できるFilterSecurityInterceptorを簡単に作成できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top