2012-03-14 21 views
1

私はSpring Security 3.1を使い始めましたが、JSF 2.1 Webアプリケーションの上に実装する方法が見つかりませんでした。私は現在持っている:JSF 2.1 WebアプリケーションのSpringセキュリティ

<context-param> 
    <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:applicationContext-business.xml 
        /WEB-INF/applicationContext-security.xml 
     </param-value> 

<filter> 
<filter-name>springSecurityFilterChain</filter-name> 
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>springSecurityFilterChain</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

そして、私のApplicationContext-のsecurity.xml:

のweb.xmlで

<beans:beans xmlns="http://www.springframework.org/schema/security" 
xmlns:beans="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-3.0.xsd 
       http://www.springframework.org/schema/security 
       http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 



<http pattern="/resources/**" security="none" /> 

<http use-expressions="true"> 
<intercept-url pattern="/administracion/departamentos/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/derechos/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/diasfestivos/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/dias/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/solicitudes/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/empleados/**" access="recursoshumanos" /> 

</http> 


<authentication-manager> 
    <authentication-provider> 
     <user-service> 
      <user name="rod" password="koala" authorities="recursoshumanos" /> 
      <user name="dianne" password="emu" authorities="jefe" /> 
      <user name="scott" password="wombat" authorities="jefe" /> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 

私はこの例を推測すると、 rkを通常の.jspと一緒に使用していますが、おそらくJSFで動作させるための追加手順がありません。残念ながら、今まで完全に動作するサンプルを見つけることはできませんでした。私は何をする必要がありますか?ありがとう!

編集:問題は、私はまだ、ログインしなくても、アプリケーションのセキュリティで保護された領域に自由に移動することができるということです

編集:ところで、私は、Webアプリケーションのルートにフィルタがないことに気づきました実際には認証メカニズムを起動します。しかしそれでもどこでも失敗します。

+0

スプリングセキュリティパッケージのデバッグレベルを有効にします。それはより多くの情報を提供します。 – jddsantaella

答えて

3

はこちらをご覧Spring Security FAQSO

+0

私はちょうど "ROLE_"プレフィックスに切り替えましたが、まだ失敗しています。 –

+0

編集:BTW、私はちょうどWebアプリケーションのルートへのフィルタが実際に認証メカニズムを引き起こすことに気づいた。しかしそれでもどこでも失敗します。

+0

@dustedrobは、通過しているURLと春のセキュリティで捕捉されているURLを投稿できますか、マッピングが正しいかどうかを確認してください。 –

0

設定が正しいようです。おそらく、あなたのhttp定義にauto-config = "true"オプションがありません。もっとここに

http://static.springsource.org/spring-security/site/docs/2.0.x/reference/ns-config.html#ns-auto-config

あなたの問題は、正確に何ですか?指定したユーザー名/パスワードでログインすることはできませんか?承認はアプリケーションに適用されません。 gbaggaで述べたように当局が

ROLE_

で始めるべき

+0

問題は、どんな種類の認証も必要とせずに、アプリケーションのセキュリティ保護された領域に自由にナビゲートできることです。 –

+0

auto-configを使っても違いはありませんでした。 –

+0

もう1つの推測では、use-expressions = "true"と定義したため、春のセキュリティではロール名ではなく式が必要です(http://static.springsource.org/springource.org/spring-security/site/docs/3.0.xを参照)。 /reference/el-access.html#el-access-web)。おそらく、式hasRole( 'recursoshumanos')を使うか、use-expressionsを削除して何が起こるかを見てください。 – dimcookies

1

を持って、答えはかなり簡単だった:の "顔" の部分を追加します。パターンへのパス。ありがとう!

関連する問題