2011-06-29 8 views
1

セキュリティを設定するための公式Spring referenceに従っています。しかし、デフォルトのスプリングログインJSPをロードする必要がある場合、春のセキュリティのログインでリソースが見つかりませんでした。spring_security_loginが見つかりません

<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>/index</url-pattern> 
</filter-mapping> 

ともapplicationContext.xmlの関連セクション:ここ

は私web.xmlスニペットです

<security:http auto-config='true'> 
    <security:intercept-url pattern="/index" access="ROLE_USER" /> 
</security:http> 
<security:authentication-manager> 
    <security:authentication-provider> 
     <security:user-service> 
      <security:user name="user" password="mypassword" authorities="ROLE_USER, ROLE_ADMIN" /> 
     </security:user-service> 
    </security:authentication-provider> 
</security:authentication-manager> 

私は、関連するすべてのdependciesロード(ならびに& TX他の人を持っていると思いますコア)私は持っています:

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-config</artifactId> 
    <version>3.0.5.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-core</artifactId> 
    <version>3.0.5.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-web</artifactId> 
    <version>3.0.5.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-taglibs</artifactId> 
    <version>3.0.5.RELEASE</version> 
</dependency> 
+0

web.xmlを設定しましたか? – gouki

+0

はい、付属の関連スニペットを参照 – NimChimpsky

+0

Springセキュリティ設定なしで '/ index'にアクセスできましたか? –

答えて

2

あなたがそうのような春のセキュリティインターセプタを介して濾過するためにあなたのアプリ内のすべてのURLをマップしたい:それはそれに遭遇したときインターセプタは、ログインURLを処理する

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

、そしてそれはあなたのサーブレットやJSPのいずれかに到達する前に。

+0

ありがとうございました。これで問題は解決しましたが、なぜワイルドカードを使ったフィルタマッピングが機能するのか分かりませんが、 "/ index"はそうではありません。 "/ index"が私が使用しているURLの場合... – NimChimpsky

0

何か(サーブレット?)がレスポンスでログインページを返す必要があるので、私はあなたがDispatcherServletを必要としている疑いがあります。私はあなたがしたものを正確にやろうとし、何が起こるか見る。

春のセキュリティアーカイブにバンドルされているsample applicationから始めて、必要なものまで削除することができます。これはこれまで私のために常に働いていました。

+0

私はweb.xmlでこれをやっていますが、私が投稿したものはスニペットです。セキュリティ設定なしで正常に動作します。つまり、スプリングとディスパッチャーサーブレットは大胆です。 – NimChimpsky

+0

@NimChimpsky ok、あなたが得ている正確なエラーを投稿してください。 – Simeon

1

Pavelが与えた答えと同様に、j_spring_security_checkなどの特定の特定のURLを処理し、これらの特定のURLに基​​づいて機能を実行するのはSpring Securityフィルタチェーンです。したがって、<filter-mapping>url-pattern/*でない場合は、使用しているSpring Securityワークフローにとって重要な特定のURLを少なくとも明示的に含める必要があります。あなたの認証メカニズム(ユーザ名/パスワード、OAuth、OpenIDなど)によっては、ソースコードを掘り下げる必要があるかもしれません。あるいは、/j_*などのワイルドカードを試してみることもできます。それはあなたの問題を解決するはずです。

+0

これはうまくいきました。 1つの特定のサーブレット/ URLだけをフィルタリングするときにワイルドカードのフィルタマッピングが必要な理由を理解できません – NimChimpsky

+0

Spring Secフィルタチェーンを通じてログインチェックなどのSpring Security固有のURLを実行する必要があるためです。この特殊なサーバー側の動作のためにSpring Securityを経由する必要があるすべての特定のURLを識別できる場合は、ワイルドカードは必要ありません。 –

関連する問題