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

时间:2017-06-16 18:33:57

标签: java spring spring-security

我们目前有一个Spring Security和登录页面的应用程序。我们现在能够从会话中检索用户信息,因此我们希望摆脱登录页面以允许用户自动登录。我一直在旋转我的轮子一两个星期,并且不知道如何以最好的Spring实践来解决这个问题。此外,一旦用户通过身份验证,他们将根据其角色重定向到相应的页面。

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

因此我们在Active Directory中使用kerberos,我们可以检索这样的用户信息:

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);
    }
}

这是当前的spring-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>

1 个答案:

答案 0 :(得分:1)

我相信我几乎就要去了。我设法找到了大部分答案:http://javadiscover.blogspot.ca/2015/05/spring-security-pre-authentication.html