如何使用Java Spring实现自动登录?

如何使用Java Spring实现自动登录?

问题描述:

我们目前有一个Spring Security的应用程序和一个登录页面。我们现在可以从会话中检索用户信息,因此我们希望摆脱登录页面以允许用户自动登录。我一直在旋转我的*一两个星期,不知道如何用最好的春季实践来解决这个问题。另外,一旦用户被认证,他们将被重定向到基于他们的角色的适当页面。如何使用Java Spring实现自动登录?

我应该使用过滤器,自定义身份验证提供程序,自定义身份验证管理器和/或自定义身份验证入口点吗?

所以,我们正在使用Kerberos与Active Directory,我们可以检索这样的用户信息:

subject = Security.getCurrentSubject(); 
if ((subject != null) && (!SubjectUtils.isUserAnonymous(subject))) { 
    Set principalSet = subject.getPrincipals(); 
    Principal[] principals = (Principal[]) principalSet.toArray(new Principal[0]); 
    if ((principals != null) && (principals.length > 0)) { 
     UserContext.get().pushSubject(subject); 
    } 
} 

下面是当前弹簧security.xml文件。

<http auto-config="true" use-expressions="true"> 

    <intercept-url pattern="/includes/**" access="permitAll"/> 
    <intercept-url pattern="/index**" access="permitAll"/> 
    <intercept-url pattern="/error**" access="permitAll"/> 

    <intercept-url pattern="/searchDist/fetchDocument**" 
        access="hasAnyRole('EED_SOC','EEConsumers','EEDocumentControllers')"/> 
    <intercept-url pattern="/searchGT/fetchDocument**" 
        access="hasAnyRole('EEG_SOC','EET_SOC','EEDocumentControllers')"/> 
    <intercept-url pattern="/searchDist**" access="hasAnyRole('EED_SOC','EEConsumers','EEDocumentControllers')"/> 
    <intercept-url pattern="/searchGT**" access="hasAnyRole('EEG_SOC','EET_SOC','EEDocumentControllers')"/> 

    <access-denied-handler error-page="/error"/> 

    <form-login 
      login-page="/index.html" 
      default-target-url="/index.html" 
      username-parameter="username" 
      password-parameter="password" 
      authentication-failure-url="/index.html" 
      always-use-default-target="false" 
      authentication-success-handler-ref="customAuthenticationHandler"/> 

    <logout invalidate-session="true" logout-success-url="/index.html"/> 
</http> 

<authentication-manager> 
    <authentication-provider ref="customAuthenticationProvider"/> 
</authentication-manager> 

+0

什么是您当前的弹簧配置,您拥有哪个身份验证提供程序。请提供更多信息。 –

+0

'autologin'是什么意思? –

+0

您的意思是单点登录(SSO)?请参阅http://www.baeldung.com/sso-spring-security-oauth2 –

我相信我差不多,我想要的。我设法通过以下方式找到我的答案的大部分:http://javadiscover.blogspot.ca/2015/05/spring-security-pre-authentication.html