gpt4 book ai didi

java - Spring Security : Allow page views for all Fully Authenticated users, 除非他们有特定的角色

转载 作者:搜寻专家 更新时间:2023-11-01 02:54:44 26 4
gpt4 key购买 nike

我正在使用 Spring 3.0.3 和 Spring Security。

因此,我对我正在制作的应用程序有相当宽松的限制。我只想确保一个人可以登录并通过身份验证才能查看该应用程序。我不想向此应用的每个潜在用户授予角色(可能是成千上万)。

所以,使用起来没问题:

<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"/>

起初这似乎有效,但它无法加载我被拒绝的页面。我相信它限制了对被拒绝页面的访问。我无法通过 Controller 或作为 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>

我尝试过使用 Controller 映射的拒绝页面 (/denied)、jsp 页面 (/denied.jsp) 甚至简单的 html 页面 (/denied.html),但我对每个页面都得到 404。发生这种情况时,我在日志文件中看不到任何内容。

最佳答案

我最终做了以下事情:

<security:intercept-url pattern="/**" access="isFullyAuthenticated()" requires-channel="https"/>
<security:intercept-url pattern="/banned" access="isFullyAuthenticated() and hasRole('ROLE_BANNED')" requires-channel="https"/>

这意味着您必须在这两种情况下登录,但您必须具有 BANNED 角色才能访问被禁止的页面。

我还添加了一个方面,它在每个带有 RequestMethod.GET 的 Controller 方法之前运行,检查用户是否具有 BANNED 角色,如果是,则将他们重定向到/banned。

如果有人知道更好的方法,请添加答案。

关于java - Spring Security : Allow page views for all Fully Authenticated users, 除非他们有特定的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com