当前位置: 首页 > 知识库问答 >
问题:

使用@PreAuthorize的多个角色

谷梁宁
2023-03-14

要检查多个角色是否具有方法级访问权限

我已使用@PreAuthorize annotation检查角色

@preAuthorize("hasRole(\""AuthoritiesContain. USER "\",)" )

如何使用@PreAuthorize注释检查多个角色?

共有3个答案

隆康平
2023-03-14

使用简单地组合角色

@PreAuthorize("hasRole('" + AuthoritiesConstants.USER + "')" +
              " && hasRole('" + AuthoritiesConstants.ADMIN + "')" )

呼延河
2023-03-14

@预授权(“hasAnyRole('ROLE\u ADMIN','ROLE\u USER')”)

hasAnyRole() 

When you need to support multiple roles, you can use the hasAnyRole() expression.

@PreAuthorize("hasAnyRole('ADMIN','DB-ADMIN')")

https://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.htmlhttps://www.appsdeveloperblog.com/spring-security-preauthorize-annotation-example/

段干弘扬
2023-03-14

您可以创建自定义注释来验证许多角色和条件。P、 e.:

@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasRole(T(com.bs.dmsbox.api.constants.RoleConstants).ROLE_AGENT) " +
        "|| hasRole(T(com.bs.dmsbox.api.constants.RoleConstants).ROLE_ADMIN)" +
        "|| (hasRole(T(com.bs.dmsbox.api.constants.RoleConstants).ROLE_CUSTOMER) && #userId == principal.username)")
public @interface IsAuthenticatedAsAgentOrCustomerIsUserId {
}

然后,可以按如下方式使用此注释:

@IsAuthenticatedAsAgentOrCustomerIsUserId
Folder findByUserIdAndType(@Param("userId") String userId, @Param("typeId") FolderType id);

此批注验证用户是否以角色代理或管理员身份登录。如果用户具有角色CUSTOMER validate IfuserId参数等于已登录的用户

 类似资料:
  • 问题内容: 我想使用Spring Security JSP标签库根据角色有条件地显示一些内容。但是在Spring Security 3.1.x中,仅检查一个角色。 我可以使用,但 ifAllGranted 已弃用。 有什么帮助吗? 问题答案: 春季安全性中有一个特殊的安全性表达: hasAnyRole(角色列表) -如果已授予用户指定的任何角色(以逗号分隔的字符串 列表形式) ,则为true。 我

  • 我跟随文章,https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory并创建了一个应用程序角色 使用hasAuthority,我可以验证单个角色。但是,我想允许管理员或具有参与者权限的

  • 这里有一个问题: 我正在制定一个计划,将公司的员工分配到不同的部门,并为他们在团队中建立不同的角色。 所以一个员工可以在多个团队中。每个团队,他们会有不同的角色。 因此,我创建了一个接口,并将其实施到 类和这样,一旦员工加入团队,我就可以为他们建立角色。 但是,由于员工可以是团队1中的< code>TeamHead和团队2中的< code>TeamMember。我不确定如何区分它以产生不同的结果。

  • 我正在使用什么 角 我想做的是 我有一个加载组件,我想在多个模块中重用 我做了什么 > 我创建了一个名为“加载覆盖”的新模块 在此模块中,我导出覆盖组件 我将此模块添加到app.module 将组件添加到多个模块时,我收到以下错误: 类型加载覆盖组件是两个模块声明的一部分:加载覆盖模块和项目模块!请考虑将加载覆盖组件移动到导入加载覆盖模块和项目模块的更高模块。您还可以创建一个新的NgMoules,

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

  • 下面是我的代码: 当请求/admin/*传入时,它将通过调用“AntMatchers(”/admin/**“).HasRole(”admin“)”来验证用户是否具有admin角色。,但在我的控制器中,它不检查用户是否拥有@preauthorize的其他权限。