Spring Security 3.1.x を使用しており、次のシナリオを達成しようとしています。
- ページは isFullyAuthenticated() で保護されています
- 現在のユーザーは、Remember Me でのみ認証されるため、完全には認証されません
- ユーザーはこの完全に認証されたページに移動します - これは許可されるべきではありません (そして許可されていません)
- ただし、ユーザーは 403 ページを取得するべきではありません。代わりに、ユーザーはログイン フォームを介してログインするように求められる必要があります。
- ログイン後、ユーザーは完全に認証されたユーザーであるため、以前に要求したページに進むことが許可される必要があります。
私のSpring Security構成は次のとおりです。
<http use-expressions="true">
<intercept-url pattern="/admin/full_auth_only.html" access="isFullyAuthenticated()" />
<form-login login-page="/login.html" default-target-url="/authenticated.html" />
<logout />
<remember-me key="someAppKey" />
</http>
そして、私は追加しようとしました:
<access-denied-handler error-page="/login.html" />
ただし、問題は、ページにアクセスすると、実際にログインフォームからプロンプトが表示され、URL だけがログインに対応していないことです。代わりに、完全に認証されたページの URL です。
http://localhost:8080/spring-security/admin/full_auth_only.html
これにより、(無効な) URL にアクセスしようとすると失敗する認証プロセスが中断
http://localhost:8080/spring-security/admin/j_spring_security_check
されます。
http://localhost:8080/spring-security/j_spring_security_check
これに関するヘルプは大歓迎です - ユースケースは非常に一般的だと思うので、カスタムの方向に進むのではなく、名前空間のサポートを使用することをお勧めします。
ありがとう。
オイゲン。