Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring和Ldap将登录用户重定向到主页_Java_Spring_Spring Security_Ldap - Fatal编程技术网

Java 如何使用Spring和Ldap将登录用户重定向到主页

Java 如何使用Spring和Ldap将登录用户重定向到主页,java,spring,spring-security,ldap,Java,Spring,Spring Security,Ldap,我使用Spring和Ldap进行用户身份验证,现在我想在用户已经登录时将用户重定向到主页,我尝试了一些通过google阅读的解决方案,但没有成功。这是我的配置代码 Spring-Security.xml <security:http auto-config="true" use-expressions="true" access-denied-page="/denied" access-decision-manager-ref="accessDecisionManag

我使用Spring和Ldap进行用户身份验证,现在我想在用户已经登录时将用户重定向到主页,我尝试了一些通过google阅读的解决方案,但没有成功。这是我的配置代码

Spring-Security.xml

   <security:http auto-config="true" use-expressions="true"
        access-denied-page="/denied" access-decision-manager-ref="accessDecisionManager"
        disable-url-rewriting="true">

        <security:remember-me key="_spring_security_remember_me"
            token-validity-seconds="864000" token-repository-ref="tokenRepository" />

        <security:intercept-url pattern="/login/login"
            access="permitAll" />



        <security:intercept-url pattern="/resources/**"
            access="permitAll" />

        <security:intercept-url pattern="/member/*"
            access="permitAll" />

        <security:intercept-url pattern="user/admin/admin"
            access="hasRole('ROLE_ADMIN')" />

        <security:intercept-url pattern="/user/user"
            access="hasRole('ROLE_USERS')" />




        <security:form-login login-page="/login/login"
            authentication-failure-url="/login/login?error=true"
            default-target-url="/checking" />

        <security:logout invalidate-session="true"
            logout-success-url="/login/login" logout-url="/login/logout" />

        <security:custom-filter ref="captchaCaptureFilter"
            before="FORM_LOGIN_FILTER" />
        <!-- <security:custom-filter ref="captchaVerifierFilter" after="FORM_LOGIN_FILTER" 
            /> -->

        <!-- <security:session-management
            invalid-session-url="/logout.html">
            <security:concurrency-control
                max-sessions="1" error-if-maximum-exceeded="true" />

        </security:session-management>
        <security:session-management
            session-authentication-strategy-ref="sas" /> -->
    </security:http>

auth.getName()始终为我提供匿名用户,即使我已登录……

您应该将目标重定向写入主页, 成功登录到spring-security.xml中的默认目标url,而不是默认目标url=“/checking”后

我不确定您在/login/login Controller中想要实现什么? 如果您只想重定向用户,在成功登录到/member/user后,您应该写:

        <security:form-login login-page="/login"
         always-use-default-target='true' 
         default-target-url="/member/user"
         authentication-failure-url="/login/login?error=true"
         />

如果您的身份验证提供程序正常且正确,Spring security将在成功登录后自动将您重定向到/member/user。

我的问题不是在成功登录后重定向用户,但假设我成功登录,而不是单击登录链接,则不应要求我再次登录,而应重定向到/member/loginI。我建议在成功登录后隐藏登录链接。类似这样:如果您检查了SecurityContextHolder,并且它包含一个
匿名身份验证令牌
,那么从Spring Security的角度来看,您没有经过身份验证(前提是请求通过安全过滤器链)。检查您的浏览器是否发送了一个会话cookie,该cookie在您通过身份验证后与会话Id匹配。
        <security:form-login login-page="/login"
         always-use-default-target='true' 
         default-target-url="/member/user"
         authentication-failure-url="/login/login?error=true"
         />
    @RequestMapping(value="/login", method = RequestMethod.GET)
public String login(ModelMap model) {
return "login";
}