1

我正在尝试制作一个可以由经过身份验证和未经身份验证的用户访问的资源。我也有记住我的身份验证。对于访问资源(页面)的用户,我希望记住我的身份验证尝试登录该人。如果登录不成功,我希望页面仍然显示但行为不同。当我编写安全拦截 url 时,我可以选择“none”或“Role_User”。我可以让 spring 以尝试 ROLE_USER 的方式工作,如果它没有成功,那么它应该优雅地降级为“None”吗?这是我的弹簧配置的外观。

<security:http auto-config='true'>
 <security:intercept-url pattern="/dynamicPage" filters="none"/>
  <security:intercept-url pattern="/**" access="ROLE_USER" />
  <security:form-login login-page="/index"
        default-target-url="/home" always-use-default-target="true"
        authentication-success-handler-ref="AuthenticationSuccessHandler"        
        login-processing-url="/j_spring_security_check" 
        authentication-failure-url="/index?error=true"/>
   <security:remember-me key="myLongSecretCookieKey" token-validity-seconds="1296000" 
        data-source-ref="jdbcDataSource" user-service-ref="AppUserDetailsService" />
</security:http>

我希望动态页面使用记住我的身份验证来尝试“Role_User”,等待失败然后回退到“无”。有推荐的方法吗?

我还没有了解诸如 isRememberMe() 和链式表达式之类的表达式,但我仍然不知道如何解决这个问题。我想要的是这样的东西。

<security:intercept-url pattern="/dynamicPage" filters="ROLE_USER,none"/>

因为 getAuthorities 查询没有返回 none,所以我需要找到其他方法来执行此操作。

4

1 回答 1

2

我会使用“匿名身份验证”,即未经身份验证的用户。

添加

<security:anonymous key="anonymous-security" />

到您的配置和

<security:intercept-url pattern="/dynamicPage" access="IS_AUTHENTICATED_REMEMBERED,IS_AUTHENTICATED_ANONYMOUSLY"/>

希望有帮助(我还没有尝试过)

于 2011-08-10T12:15:51.573 回答