我有以下情况
/drug下的所有东西都是安全的,我不希望用户能够看到/drug下的任何东西,所以我在spring安全配置中有这个规则。
<intercept-url pattern="/drug/**" access="hasRole('ROLE_DRUG')" />
但是当用户点击/drug时,我希望能够显示一个访问被拒绝的页面,其中包含关于他们如何购买此部分或模块的消息,并且我必须在相同的url下显示访问被拒绝的消息,即//访问被拒绝
因此,我在spring安全配置中添加了另一个规则
<intercept-url pattern="/drug/access-denied" access="isAuthenticated()"/>
但是spring security似乎只考虑了其中的一个,也就是第一个,改变顺序没有任何区别。并且url必须是/drug/access-denied
有什么想法吗?
发布于 2013-08-15 17:54:04
请参见下面的配置,并尝试在您的配置中进行类似的配置。首先,我不明白你为什么要写
<intercept-url pattern="/drug/access-denied" access="isAuthenticated()"/>
在拒绝访问页面中,您只想让经过身份验证的用户查看该页面。
使用您的配置,当它发现显示访问拒绝页面时,您将其作为isAuthenticated(),然后再次,如果用户没有登录并直接尝试访问该页面,它将把用户发送到登录页面而不是访问拒绝页面。
我觉得应该是,
<intercept-url pattern="/drug/access-denied" access="permitAll"/>
然后写下,
<intercept-url pattern="/drug/**" access="hasRole('ROLE_DRUG')" />
见下文
<security:form-login login-page="/login.jsp"
default-target-url="/drug/home" authentication-failure-handler-ref="authenticationFailureHandler" />
<security:intercept-url pattern="/login.jsp"
access="permitAll" />
<security:intercept-url pattern="/accessDenied.jsp"
access="permitAll" />
<security:intercept-url pattern="/drug/*"
access="isAuthenticated()" />
<security:logout logout-url="/j_spring_security_logout" logout-success-url="/login.jsp?logout=success"
invalidate-session="true" />
</security:http>
发布于 2014-09-09 15:34:48
在intercept-url标签之前将其添加到您的配置中如何?
<access-denied-handler error-page="/drug/access-denied" />
然后,您可以删除“access- rule”的intercept-url规则
https://stackoverflow.com/questions/18250080
复制相似问题