Spring Security身份验证请记住我

时间:2013-09-13 07:05:38

标签: spring authentication spring-security

我有两个不同的登录,一个外部和一个内部。外部位于外部主页上,因此当您登录时,您将被重定向到“主”页面,内部位于主页面上。 问题是,当我登录外部表单时被重定向,然后返回到外部页面,它再次重定向我,因为我的isAuthenticated()是真的。 那么当我在外部页面上时,如何将isAuthenticated状态设置为false。

我是否必须将“remember_me”设置为disabled,使用不同的session-authentication-strategy或不同的authenticationManager。

任何想法/提示? thx任何帮助。

1 个答案:

答案 0 :(得分:1)

我假设你有一组不同的用户。所以,是的,您将需要一个不同的身份验证管理器。为内部与外部配置一个,并在http配置中引用它们。您可能还需要不同的安全上下文。我们使用一种策略,其中一些内部用户与外部用户保持不同。正常配置您的<http...部分之一。但另一个应该是这样的:

<bean id="internalSecurityContextRepository" 
    class="org.springframework.security.web.context.HttpSessionSecurityContextRepository">
    <property name="springSecurityContextKey" value="SPRING_SECURITY_CONTEXT.internal"/>
</bean>

然后在内部配置中确保引用新的上下文存储库:

<sec:http pattern="/internal/**"
    security-context-repository-ref="internalSecurityContextRepository"
    authentication-manager-ref="internalAuthenticationManager"
    ... other stuff ... />

使用此配置,spring将能够使用不同的身份验证管理器和不同的用户组来进行内部和外部。