2017-04-11 12 views
2

私はSpring Controllerを使用しているので、Spring Securityを使用して簡単にブロックされました。BadCredentialsExceptionがスローされ、ログインページにリダイレクトされない

私は、祖母のクッキーレシピの後でなければ、誰かがログインする必要はないという要件があります。だから私のコントローラコードでは、彼らは後のレシピを確認するためにチェックし、クッキーであればBadCredentialsException()をスローします。

コントローラメソッドを分割したくありません。これらのレシピはDBになり、一部のもの(ビスケット)は誰でも利用できるようになり、他のものは特定の役割が必要になります。 (肉など)

しかし、これは例外が拾われているように見えますが、一般的なExceptionインターセプタを購入し、「何かが間違っていました」ページにリダイレクトされています。

ログインページにアクセスしてログインしてから、レシピページにリダイレクトする必要があります。

<bean id="failureRedirectHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"> 
    <property name="useForward" value="true"/> 
</bean> 

は再び、このすべては、インターセプト-URLアクセス=「IS_AUTHENTICATED_FULLY」で働いていた。しかし、私は明示的にBadCredentialsExceptionをスローした場合、なぜ文句を言わない、それは動作しますか?

答えて

2

投げたい例外はAccessDeniedExceptionだと思います。標準設定では、ログインしていない場合はログインページにリダイレクトされます。ログインしている場合は、「アクセスが拒否されました」ページが表示されます。このアクセス拒否ページをカスタマイズできます。たとえば、別のユーザーとしてログインするためのリンクを含めることができます。

badCredentialsExceptionは、実際にはが入力されたときに、コントローラでスローされることは意図されていません。内部では、の間違った資格情報が入力されています。

+0

これはまだエラーフィルタによって取り上げられています。 – mmaceachran

+0

これは間違っています。並べ替えの...それはスローされる正しい例外ですが、あなたは自分自身HandlerExceptionResolverを書く必要がありますがうまくいくが、useRefererは失われています。 – mmaceachran

関連する問題