Интересно, как / где я могу управлять Аутентификацией в SecurityContext в Сценарии предварительной аутентификации.
Я использую Spring Security 2.x для реализации сценария предварительной аутентификации в моем проекте. теперь это работает патио.
После входа пользователя с помощью процесса предварительной аутентификации они могут быть авторизованы с соответствующими ролями и могут получать доступ к ресурсам, определенным в безопасности: filter.
, например
<security:filter-invocation-definition-source lowercase-comparisons="true" path-type="ant">
<security:intercept-url pattern="/resource/**" access="ROLE_ADMIN" />
В каком-то контроллере я хочу проверить участника в контенте безопасности.
public abstract class AbstractUserAuthenticationController extends AbstractController
{
protected boolean isAuthenticated(String userName)
{
Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); // where issue come up
Но SecurityContextHolder.getContext (). GetAuthentication () всегда возвращает ноль.
Кроме того, я также не могу использовать тег secuiry в jsp для проверки наличия у пользователя относительных ролей
<security:authorize ifNotGranted="ROLE_ADMIN">
no role found
</security:authorize>
Ниже показан используемый мной «filterChainProxy».
<bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/*subscri*=httpSessionContextIntegrationFilter,logoutFilter,j2eePreAuthenticatedProcessingFilter,securityContextHolderAwareRequestFilter,subscribeExceptionTranslationFilter,filterInvocationInterceptor
/**=httpSessionContextIntegrationFilter,logoutFilter,j2eePreAuthenticatedProcessingFilter,logoutFilter,rememberMeProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
</value>
</property>
</bean>
<bean id="preAuthenticatedAuthenticationProvider" class="org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationProvider">
<property name="preAuthenticatedUserDetailsService" ref="preAuthenticatedUserDetailsService" />
</bean>
<bean id="preAuthenticatedUserDetailsService" class="demo.project.security.auth.RsaAuthenticationUserDetailsService" >
<property name="userService" ref="userService" />
</bean>
<bean id="j2eePreAuthFilter" class="demo.project.security.filter.AutoLoginFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="userService" ref="userService" />
</bean>
Я думаю, мне нужно где-то установить для Authentication SecurityContext, но я не знаю, где и где.
Чего мне не хватает? Кто-нибудь может дать мне некоторые подсказки?
Спасибо!
Ian