【发布时间】:2014-07-30 14:32:08
【问题描述】:
我希望 Spring 安全性可以阻止对动态 URL 更改的访问
http://domain.com//** shareURL 是一个 ID,我遇到的问题是,如果我使用 shareID 1 访问,程序告诉我需要登录(一切正常)但是当我登录尝试运行 shareID 2 时,程序应该再次告诉我重新登录,因为不是我的会话,但现在.. 程序允许我访问这个 shareID。
如何阻止该用户在不登录的情况下更改 shareID?
我也在使用预授权,因为如果特定的 shareID 不需要密码,spring security 会通过身份验证以避免登录页面并注入假身份验证。 最好的问题,如果这个
ShareID 1(不需要密码) ShareID 2(需要特定密码)
如果我使用共享 1 登录(无需密码自动登录)我可以访问共享 ID 2(因为我已登录)但不应该这样做。
Spring-security.xml(仅问题配置)
-->
<!-- Share Authentication Manager-->
<beans:bean id="shareUserService" class="com.segator.ownline.service.impl.OwnlineShareSecurityService" />
<beans:bean id="preAuthenticationProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
<beans:property name="preAuthenticatedUserDetailsService"
ref="shareUserService" />
</beans:bean>
<beans:bean id="preAuthFilter"
class="com.segator.ownline.controller.config.ShareLinkAuthenticationFilter">
<beans:property name="authenticationManager" ref="appControlAuthenticationManager" />
</beans:bean>
<authentication-manager alias="appControlAuthenticationManager" id="shareAuth">
<authentication-provider ref="preAuthenticationProvider" />
</authentication-manager>
我认为我需要一个额外的配置来告诉 Spring Security,如果用户更改 shareID 需要登录,例如我是否可以对拦截器 URL 实施正确的方法 例子
intercept-url pattern="/share/**" access="hasRole('ROLE_SHARE') && sameShareIDLogged()"
对不起,我的英语不好,我现在正在学习。
【问题讨论】:
标签: java spring spring-mvc spring-security pre-authentication