0

假设我有/admin/login网站。用户想要访问受/admin保护的站点(需要登录)。在登录用户被重定向到后,Spring Security 向用户询问信用default-target-url。接下来,他尝试转到/admin并再次查看登录表单。怎么了?

春窗需要登录网站,我无法进入网站。

配置

    <security:http auto-config="true" use-expressions="true">
        <security:intercept-url pattern="/admin/*" access="hasRole('ROLE_ADMIN')"/>
        <security:form-login default-target-url="/succes"/>
        <security:session-management/>
    </security:http>

    <bean id="service" class="com.springapp.mvc.dao.HibernateService"/>

    <bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl"/>

    <bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource">
        <property name="userPropertyToUse" value="username"></property>
    </bean>

    <bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder"/>

 <security:authentication-manager>
        <security:authentication-provider user-service-ref="service">
            <security:password-encoder hash="md5">
                <security:salt-source ref="saltSource"/>
            </security:password-encoder>
        </security:authentication-provider>
    </security:authentication-manager>
4

1 回答 1

0

它真的很有趣,最初我无法重现,因为它在正常设置下对我来说工作正常,但我能够重现在浏览器中禁用 cookie 的问题。

所以解决方案是

您只需要在浏览器中启用 cookie,因为当您最初登录时,它允许您并将您传递给目标 url(在您的情况下这不安全),之后当您尝试/admin/somepage再次访问它时会询问凭据,因为会话不是跟踪。

我希望您知道浏览器如何处理 cookie 和 url 重写以进行会话跟踪。

注意:这似乎只是一个问题,因为我能够重现,如果不是您的情况,您需要共享您的控制器和重现问题的步骤。

于 2013-06-23T13:02:58.447 回答