如何让jsp中的spring security角色层次结构工作?

2024-05-06

我尝试让角色层次结构在我的应用程序中发挥作用。我唯一想要的是在所有级别定义的层次结构:在 url 级别,现在也在视图级别(在我的 jsp 文件中)。

我使用以下设置:

     <beans:bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased">
        <beans:property name="decisionVoters">
            <beans:list>
                <beans:ref bean="roleHierarchyVoter"/>
                <beans:bean class="org.springframework.security.web.access.expression.WebExpressionVoter">
                    <beans:property name="expressionHandler">
                        <beans:bean class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler">
                            <beans:property name="roleHierarchy" ref="roleHierarchy"/>
                        </beans:bean>
                    </beans:property>
                </beans:bean>
                <beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
            </beans:list>
        </beans:property>
    </beans:bean>

    <beans:bean id="roleHierarchyVoter" class="org.springframework.security.access.vote.RoleHierarchyVoter">
        <beans:constructor-arg ref="roleHierarchy"/>
    </beans:bean>

    <beans:bean id="roleHierarchy" class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
        <beans:property name="hierarchy">
            <beans:value>
                ROLE_ADMIN > ROLE_OWNER
                ROLE_OWNER > ROLE_DISTRIBUTOR
                ROLE_DISTRIBUTOR > ROLE_RESELLER
                ROLE_RESELLER > ROLE_USER
            </beans:value>
        </beans:property>
    </beans:bean>

<http auto-config="true" use-expressions="true" access-decision-manager-ref="accessDecisionManager">
    ...
</http>

对于 URL 级别(拦截 URL),它工作得很好,但在我的 jsp 文件中不起作用。问题是我没有正确理解配置以使角色层次结构正常工作。

<security:authorize access="hasRole('ROLE_ADMIN')">
    <div class="span4">
        <h2>Admin</h2>
    </div><!--/span-->
</security:authorize>
<security:authorize access="hasRole('ROLE_OWNER')">
    <div class="span4">
        <h2>Owner</h2>
    </div><!--/span-->
</security:authorize>
<security:authorize access="hasRole('ROLE_DISTRIBUTOR')">
    <div class="span4">
        <h2>Distributor</h2>
    </div><!--/span-->
</security:authorize>

我使用这个简单的示例来测试视图级别的角色层次结构,但它不起作用。只有具有管理员角色的用户才能看到他的块,而其他人则看不到。

有人知道我的配置做错了什么。


我有同样的问题(Spring Security 3.2.5)。

通过声明我的解决方案DefaultWebSecurityExpressionHandler之前<http> section

<!-- This must go before the http element in order to be used by security:authorize tags using the access attribute -->
<!-- https://jira.spring.io/browse/SEC-1452 -->
<beans:bean id="webSecurityExpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler">
    <beans:property name="roleHierarchy" ref="roleHierarchy" />
</beans:bean>

see https://jira.spring.io/browse/SEC-1452 https://jira.spring.io/browse/SEC-1452 and http://forum.spring.io/forum/spring-projects/security/67494-configuration-of-spring-security-3-0m1-expression-handler-bug/page3 http://forum.spring.io/forum/spring-projects/security/67494-configuration-of-spring-security-3-0m1-expression-handler-bug/page3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让jsp中的spring security角色层次结构工作? 的相关文章

  • 将每个 http 块映射到特定的身份验证提供程序

    我想根据用户的上下文路径来设置 Spring Security 配置 如果用户反对某个网址http 路径1 资源1 http path1 resource1我想将他们定向到特定的身份验证提供商 如果他们进来http 路径2 资源2 http
  • 如何在ngDialog中加载数据

    我有一个要求 我需要从 jsp 页面打开一个对话框 并且在打开该对话框时 我需要从服务器加载一些预填充的数据 使用 AJAX 调用 如果我在打开对话框之前进行 AJAX 调用 我会获取数据 但对话框会像新页面一样加载 如果我尝试在新控制器中
  • Shiro 与 SpringSecurity [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在评估基于Java的安全框架 我是Spring 3 0用户 因此SpringSecurity似乎是正确的选择 但Spring安全性似乎过
  • 如何从JSP中获取java类的对象

    我有一个结果jsp页面 它打印java类的字符串变量 有人能给我任何想法吗 我使用简单的 httpServlet 作为操作类 Class A String name public void setName this name callMet
  • Struts 2 动态变量

    我正在尝试使用 set 标签在 Struts2 中创建动态变量
  • 当属性名称本身是动态变量时如何获取bean属性的值

    我正在尝试编写一个自定义 JSPX 标记 该标记从给定列表中的每个对象读取给定 bean 属性的值 并将该属性的名称作为 JSP 属性传递给该标记 该标签看起来像这样
  • 如何在 jsp 中访问 ModelMap?

    如何从jsp中的ModelMap访问一个对象 以便调用它的方法 目前我收到此错误 Syntax error on token delete this token JSP Java Controller RequestMapping dash
  • 如何使用 Spring Security 跨多个基于 JVM 的应用程序实现单点登录

    我目前正在尝试跨多个基于 JVM Grails Servlet 的 Web 应用程序实现单点登录解决方案 这些应用程序目前都部署在同一个 servlet 容器 当前是 Tomcat 但不想将我的解决方案仅限于 Tomcat 中 所有 Web
  • 在 JSP 中对表单操作使用相对路径

    如何在表单操作中使用相对路径
  • 防止浏览器弹出警告窗口

    我正在尝试在新窗口中打开 jsp 页面 使用 JavaScriptwindow open产生浏览器警告 并且在某些情况下 firefox 将默认阻止弹出窗口 有没有办法解决这个问题 这不是恶意应用程序 它是内部用户工具 大多数浏览器不会阻止
  • 使用 Spring Security 将数据库和 SAML 身份验证合并到一个应用程序中

    我正在尝试使用 spring security spring security starter 在 spring boot 2 2 4 应用程序中实现身份验证和授权 使用案例 根据用户名 我想将用户重定向到特定的身份验证提供商 如果用户名结
  • Spring Security 上的组和 acl

    我想使用 Spring Security 来管理用户 组和权限 我想使用 ACL 来保护我的域对象 但我找不到将组分配给 acl 的方法 例如 我有用户和组 每个组可以拥有以下证券 管理论坛 可以是类似的角色ROLE FORUM MANAG
  • Spring Oauth2. DaoAuthenticationProvider 中未设置密码编码器

    我对 Spring Oauth 和 Spring Security 很陌生 我正在尝试在我的项目中使用 client credentials 流程 现在 我设法使用自己的 CustomDetailsS ervice 来从系统中已存在的数据库
  • 在 JSP/JSTL/EL 中访问集合的大小[重复]

    这个问题在这里已经有答案了 我有一个名为的列表变量services在我的 JSP 页面中 如果列表中的元素超过 1 个 我需要向页面添加一些标记 我想做的是
  • JavaScript 中的 jstl

    可以在javascript中使用jstl吗 我正在绑定设置
  • Angular JS + Node JS + Passport + Spring OAuth2 身份验证/授权

    我是 PassportJS 和 AngularJS 的新手 我对如何进行此授权有疑问 我有由 Oauth2 保护的 Spring REST API 但我必须像这样一起发送用户凭据 http localhost 8080 myapp oaut
  • 已做出回应

    我有一个取消按钮 用于刷新值 现在我已将它们转换为刷新或重新加载页面并移至只读页面 因此更改了取消按钮来调用这样的函数 function chkArea var url
  • Java Web 技术中的 AJAX 自动完成文本框(JSP 和 servlet)

    我需要您的帮助 了解如何使用 Java Web 技术 JSP Servlet 和 AJAX 使 HTML 输入文本元素像 Google 的 AJAX 搜索引擎 输入文本元素一样工作 下拉列表中的数据将来自数据库表 例如分别是 MySQL 或
  • JPS useBean 与 HashMap

    如何正确地将 jsp useBean 与列表和地图等集合一起使用 我可以通过使用获取列表 type List
  • 每个组织的 Spring Security 用户角色

    在我的应用程序中 我有一个名为组织的顶级实体 用户和组织之间的关系是多对多的 因此 我可能会遇到以下情况 用户拥有组织的角色 ROLE ADMIN 用户拥有组织的角色 ROLE USER 我需要确保当用户 A 访问 Organization

随机推荐