@PreAuthorizeアノテーションをマネージドBeanと統合することを誰かが助けてくれることを願っています。私はこれを数時間働かせようとしてきましたが、明らかに欠けているものがあります。 Webに関する私の研究は、global-method-security要素がspringまたはaspectjと共に使用できることを示しています。私はマネージドBeanをSpring Beanとして宣言したくないので、私はaspectjを使うことにしました。何らかの理由で、PreAuthorizeアノテーションは完全に無視されます。私はエラーが発生せず、すべてがコンパイルされて正常に実行されますが、マネージドBeanにはセキュリティチェックはありません。どうやらアスペクトはある種の織物を必要としますか?たぶん私はこの間違った方法に近づいているし、簡単な方法があります。 JSF 2.2とSpring Security 4でTomcat 7を使用する。私はクラスの注釈を持っているが、それは私の問題かもしれない。私はクラスにそれを置くことは、デフォルトのコンストラクタメソッドを使用することを前提としています。Spring Security 4 JSFマネージドBeanの事前認証
誰かに助言してもらえますか? (下記のconfigs)
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:b="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
<http use-expressions="true">
<headers>
<frame-options policy="SAMEORIGIN" />
</headers>
<intercept-url pattern="/admin/**" access="hasRole('Admin')" />
<intercept-url pattern="/cms/**" access="hasAnyRole('Admin','CMS_Admin')" />
<form-login login-page='/login' default-target-url="/" />
<logout invalidate-session="true" logout-success-url="/" />
<csrf disabled="true"/>
</http>
<b:bean name="bcryptEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<b:bean name="iberisUserDetailsService" class="com.bizznetworxonline.iberis.core.web.controllers.admin.security.IberisUserDetailsService"/>
<authentication-manager>
<authentication-provider user-service-ref='iberisUserDetailsService'>
<password-encoder ref="bcryptEncoder"/>
</authentication-provider>
</authentication-manager>
<global-method-security mode="aspectj" pre-post-annotations="enabled" proxy-target-class="true">
</global-method-security>
</b:beans>
Mavenのは、あなたのBeanを作成し、春ではないためにJSFに指示しているとおり、豆
@ManagedBean
@ViewScoped
@PreAuthorize("hasAnyRole('Admin')")
public class ProductManagement
私はクラスレベルで宣言したとき、それはコンストラクタ呼び出しをブロックする期待していました。私は特定の方法でそれを試しても、まだ動作しません。それは大丈夫だけど、私はあなたが言ったように間違った方法でこれについて行くと思う。私はbox-of-the-box-of-urlに固執し、特定のメソッドのチェックを実行するための小さなセキュリティutilクラスを作成します。私はそれが私にもっと洗練されたコントロールを与えるだろうと思う。そうすれば、役割に基づいてデータベースに権限を入れることができます。春のセキュリティとの戦闘が少ないほど良い。 – user2677597
@ user2677597問題をよりよく説明するために私の答えを少し変更しました。私が言ったように、JSF Beanで春の注釈を使用する機会はありません。あなたはSpring Beanでそれを有効にすることができます(Springのドキュメント、他のフレームワークとの統合の部分を参照してください)。このようにすれば、カスタムスコープを実装してJSFビューのスコープをエミュレートする必要がありますが、インターネットで実装されている実装はすでにあります。 –
@ user2677597解決しましたか?マネージドBeanメソッドでアノテーションレベルを取得するにはどうしましたか? –