0

DB から動的にインターセプターを生成するためのスプリング セキュリティを構成しました。ここにガイドがあります。ログインページからホームページにアクセスしようとすると、次のエラーが発生します。

An Authentication object was not found in the SecurityContext

このエラーは、次の行のクラス AbstractSecurityInterceptor で発生します (デバッグを行いました)。

if (SecurityContextHolder.getContext().getAuthentication() == null) {
            credentialsNotFound(messages.getMessage("AbstractSecurityInterceptor.authenticationNotFound",
                    "An Authentication object was not found in the SecurityContext"), object, attributes);
        }

これはログです:

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext
    org.springframework.security.access.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:339)
    org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:198)
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

これは、Spring Security の私のファイル構成のリンクです

このエラーが発生するため、アプリにログインするユーザーがSYS_ADMINロールを持っているため、わかりません。この役割は、ホームページへのアクセスを許可されています...

クラス InterceptorApplicationService (このクラスはインターフェイス FilterInvocationSecurityMetadataSource を実装します) がメソッド getAttributes と getAllConfigAttributes でそれぞれ SYS_ADMN ロールとロールのリストを返すことをデバッグして確認しました

4

1 に答える 1

0

問題を解決しました。投稿はこちら

于 2013-03-20T18:15:25.307 に答える