当前位置: 首页 > 面试题库 >

具有多个角色的Spring安全性访问

百里智勇
2023-03-14
问题内容

我想为具有以下角色之一(ROLE1或ROLE2)的用户定义某些页面的访问权限

我正在尝试在我的spring security xml文件中进行如下配置:

<security:http entry-point-ref="restAuthenticationEntryPoint" access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security" use-expressions="true">
        <!-- skipped configuration -->
        <security:intercept-url pattern="/rest/api/myUrl*" access="hasRole('ROLE1') or hasRole('ROLE2')" />

        <!-- skipped configuration -->
    </security:http>

我尝试了各种方法,例如:

access="hasRole('ROLE1, ROLE2')"
access="hasRole('ROLE1', 'ROLE2')"
access="hasAnyRole('[ROLE1', 'ROLE2]')"

等等

但似乎没有任何效果。

我一直在例外

java.lang.IllegalArgumentException: Unsupported configuration attributes:

要么

java.lang.IllegalArgumentException: Failed to parse expression 'hasAnyRole(['ROLE1', 'ROLE2'])'

应该如何配置?

谢谢


问题答案:

问题是我配置了自定义access-decision-manager-ref="accessDecisionManager" ,但没有通过其中一名选民。

通过添加org.springframework.security.web.access.expression.WebExpressionVoteraccessDecisionManagerbean中来解决。



 类似资料:
  • 我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,每个角色可以有多个权限。中间件应在继续请求之前检查用户是否具有特定权限(在其任何角色内)。 我能够实施一个案例,其中 用户属于一个具有多个权限的角色 我需要实现具有多个权限的多个角色的用户。有什么指点吗?

  • 我使用Spring MVC和Spring Security进行认证。我用用户名和密码登录,但我想再发送两个参数。有什么办法可以做到吗? 这是登录表单: 我也想在登录中发送时区和语言。 以及

  • 我创建了这个简单的控制器: 如您所见,它受的保护。 根据日志: 如您所见,用户已通过身份验证,并具有角色查看器。然而,由于“访问被拒绝”,它无法到达endpoint。 上一个日志片段: 主体:用户名;凭据:[受保护];身份验证:真;详细信息:空;授予权限:查看者 我的JWTFilter看起来像: 有什么想法吗?

  • 我正在努力学习Symfony的角色和安全性。我当前的security.yml文件如下所示: 我正在为我的用户使用这个设置: 这是我的问题。我一直缺少安全性的访问控制部分,但是,角色标记为ROLE\u admin的路径将允许用户person访问路由,即使该用户没有ROLE\u admin的角色。我想知道这是否是因为路由本身与路由由同一控制器共享?或者有人看到我的代码哪里出了问题,因为用户可以访问他们

  • 我有3个表:User、Role和具有Role\u id和User\u id的透视表RoleUser。 对于关系在我的模型我这样做: 榜样: 用户模型: 我为filter by one角色做了这项工作,效果很好: 但是现在我需要通过许多角色来过滤我的用户。 我将从我的前端发送一个数组,其中包含角色的id。 事实上,我可以得到如下角色 但我不知道如何才能获得具有此角色的用户。

  • null 根据AWS文档,您应该始终为EC2创建角色,并根据您的需求为角色分配策略。 向一个角色授予多个服务访问权限是否存在安全问题?我问这个问题的原因是,使用EC2元数据,您可以在此时使用该角色获得分配给EC2实例的accesskey信息。EC2经常刷新密钥。 任何反馈或输入。