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

Spring Security中的@Secured注释中是否允许多个角色具有“或”条件

陆耀
2023-03-14

我在我的项目中使用spring和SpringSecurity4。我必须用ROLE\u USER或ROLE\u TIMER\u TASK调用我的dao方法。

目前我正在使用此注释-

 @Secured({"ROLE_USER", "ROLE_TIMER_TASK"})

这个@Secure注释只允许那些同时拥有两个角色的用户,但我想通过拥有其中任何一个角色的用户调用此方法。

如果用户在此角色中拥有任何一个角色并调用此方法,是否可能?

共有3个答案

颜功
2023-03-14

除了holmis83先前的回答。。。。

要启用方法安全性的前注释和后注释,请执行以下操作:

Java配置:

@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig {
// ...
}

Xml配置:

<global-method-security pre-post-annotations="enabled"/>
秦奇
2023-03-14

要通过上述任何角色调用该方法,请使用:

@PreAuthorize("hasAnyRole('ROLE_USER','ROLE_TIMER_TASK')")

并在安全类中启用预注释和后注释:

@EnableGlobalMethodSecurity(prePostEnabled = true)
田嘉慕
2023-03-14

对于或,使用@PreAuthorize注释代替:

@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_TIMER_TASK')")

在Spring Security版本4中,可以省略ROLE_前缀:

@PreAuthorize("hasRole('USER') or hasRole('TIMER_TASK')")

确保在安全配置中启用了前注释和后注释。

 类似资料:
  • 问题内容: 在JS中,我试图检查扩展名是否以“ png”“ jpg”或“ gif”结尾。我知道这可以通过switch语句来完成,但是我想知道是否有一种更简单的方法可以将所有条件都放入条件语句中。喜欢: 实现此目标的最佳方法是什么? 问题答案: 您可以使用如下数组: 在这种情况下,您将存储“有效”扩展名。然后,您可以使用的方法来查找数组中的任何项目是否与您正在查看的特定扩展名相匹配- 检查值是否大于

  • 我正在使用泽西提议做一个网络服务。 我想做的是一个@Post方法,它通过表单接收3个参数,通过url接收1个参数。 但当我这样做时,我从eclipse得到一个警告:在使用javax的方法中只允许一个未注释的参数。ws。rs.POST注释。当执行时,我得到下一个错误: 消息java。lang.IllegalStateException:当请求实体的内容类型不是application/x-www-fo

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

  • 我的代码中有这一点,但当我执行命令两次(名称命令、用户和角色)时,它不会返回这条消息。它一直在说“我将[角色名]添加到[用户]”

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

  • 我在数据库中有Consumer表,其中Consumer_type列上有check约束,如下所示: 现在,从hibernate方面,我想添加check约束注释,该注释只允许消费者类型表中的“ACCOUNT”和“ORGANIZATION”值。 为此,我应该使用哪个hibernate/jpa注释?