私は春のブートプロジェクトを持っています。要求が不正なユーザー資格情報を使用して行われた場合:UsernameNotFoundExceptionが春の起動時に403としてスローされる
はcatch (RuntimeException ex) {
log.error("Error occurred while fetching user {}: {}", securityPrincipal, ex);
throw new UsernameNotFoundException("Could not find user: " + securityPrincipal);
}
しかし、最終的にスローされた例外は500
のリンクの数を通過した後、私はそれを見つけたです:
protected AbstractPreAuthenticatedProcessingFilter multiPreAuthenticatedProcessingFilter() throws Exception {
MultiPreAuthenticatedProcessingFilter filter = new MultiPreAuthenticatedProcessingFilter();
filter.setAuthenticationManager(authenticationManager());
filter.setPreAuthenticatedPrincipalProviders(preAuthenticatedPrincipalProviders);
filter.setCheckForPrincipalChanges(true);
filter.setInvalidateSessionOnPrincipalChange(true);
filter.setContinueFilterChainOnUnsuccessfulAuthentication(**true**);
return filter;
}
continueFilterChainOnUnsuccesfulAuthenticationを変更しますtrueを指定すると、そのままAuthentication例外がスローされます。しかし、これがtrueに変更された後、UsernameNotFoundExceptionが401の代わりに403としてスローされます。
いくつかの基本的なセキュリティ設定がありますか?
これについての回答を得ましたか? – Scooby
@Scooby - Nope。まだ何もありません。 –
本当に401を投げる必要がある場合は、@ controllerAdviceでexceptionHandlerを作成し、必要なステータスコードを投げてください。このリンクにはすべての詳細がありますhttps://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc –