【发布时间】:2010-10-05 21:47:54
【问题描述】:
我正在使用带有 Spring Security 的 Spring 3.0.3。
所以,我对我正在制作的应用程序有相当宽松的限制。我只想确保一个人可以登录并通过身份验证才能查看该应用程序。我不想将角色授予此应用的每个潜在用户(可能成千上万)。
所以,用起来没问题:
<security:intercept-url pattern="/**" access="isFullyAuthenticated()" requires-channel="https"/>
但现在我希望能够在需要时限制人们使用该应用程序,因此我创建了一个名为 ROLE_BANNED 的角色,希望我可以将角色分配给那些有问题的人。
所以,现在我正在尝试这个:
<security:intercept-url pattern="/**" access="isFullyAuthenticated() and not hasRole('ROLE_BANNED')" requires-channel="https"/>
起初这似乎可行,但它无法加载我被拒绝的页面。我相信它限制了对被拒绝页面的访问。我无法通过控制器或 WEB-INF 中的 jsp 加载被拒绝的页面。
谁能告诉我如何允许经过身份验证的用户访问我的所有应用并将具有特定角色 (ROLE_BANNED) 的人发送到被拒绝的页面?
编辑 这是我的整个安全性:http 设置:
<security:http auto-config="true" access-denied-page="/denied" entry-point-ref="casAuthenticationEntryPoint" use-expressions="true">
<security:intercept-url pattern="/**" access="isFullyAuthenticated() and not hasRole('ROLE_BANNED')" requires-channel="https"/>
<security:intercept-url pattern="/denied" access="IS_AUTHENTICATED_FULLY" filters="none" />
<security:logout logout-url="/logout" logout-success-url="${cas.logoutUrl}" />
<security:session-management session-fixation-protection="none" />
<security:custom-filter after="CAS_FILTER" ref="casAuthenticationFilter"/>
<security:custom-filter before="CHANNEL_FILTER" ref="channelProcessingFilter" />
<security:port-mappings>
<security:port-mapping http="80" https="443" />
</security:port-mappings>
</security:http>
我尝试过使用控制器映射的拒绝页面 (/denied)、jsp 页面 (/denied.jsp) 甚至是简单的 html 页面 (/denied.html),但每个页面都得到 404。发生这种情况时,我在日志文件中看不到任何内容。
【问题讨论】:
标签: java spring-security