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

标签 java spring spring-security

我们目前有一个带有 Spring Security 的应用程序和一个登录页面。我们现在可以从 session 中检索用户信息,因此我们希望摆脱登录页面以允许用户自动登录。我已经在这方面投入了一两周的时间,但不知道如何在考虑到 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);
    }
}

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

最佳答案

我相信我已经快到达我想去的地方了。我设法通过以下方式找到了大部分答案:http://javadiscover.blogspot.ca/2015/05/spring-security-pre-authentication.html

关于java - 如何使用 Java Spring 实现自动登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595885/

相关文章:

java - Android (Java) 中 MediaRecorder 的 LocalSocket(Unix 域)客户端-服务器数据流问题

java - Spring 3.0 Expression Langugage Java 泛型参数

java.lang.NoClassDefFoundError : Could not initialize class org. aspectj.weaver.reflect.ReflectionWorld 错误

spring - 使用 Maven 的 guava 缓存应用程序示例

spring - 使用 Ajax 使用 Spring security 登录

java - Spring 切换用户 : only allow a user with a specific role switch to another user with specific roles

java - 同步块(synchronized block)抛出 DuplicateKeyException

java - 数字迷宫求解算法

JAVA:可以用不同的语言写评论吗?

java - Spring Boot安全请求方法 'POST'不支持