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

spring boot中基于角色的授权

太叔鹏云
2023-03-14

我对Spring靴还不熟悉。我需要在spring boot中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。每当调用api时,我都会设置不同的访问权限(读取、添加、删除、编辑),需要检查访问权限并允许权限。我计划使用拦截器调用具有查询的方法,以从DB获取访问权限,并拒绝或访问api。有没有其他更好的方法我可以用同样的方法?

共有3个答案

金兴朝
2023-03-14

您可以创建自定义注释来处理每个角色的请求。您可以阅读本文以了解有关如何实现的更多详细信息。

并且在api中会有格式:

@GetMapping(...)
@YouCustomAnnotation("roleName")
public void doSomeThing(){
}

如果用户的角色与注释中的角色定义匹配,将调用此api;如果用户的角色不匹配,服务器将返回404代码

曹建华
2023-03-14

对于授权,也可以有以下两种方式:

  1. OAuth(参考-https://medium.com/@b/li>
  2. Spring Security角色和特权(引用https://www.baeldung.com/role-and-privilege-for-spring-security-registration)
佟颖逸
2023-03-14

如果您使用的是Spring Security性,则可以使用方法安全性注释来处理它,如预授权、后授权。。甚至将它们组合成新的注释。

首先,您的用户需要实现UserDetails,然后您应该根据您的角色和权限结构实现getAuthorities()方法Spring Security基本上检查getAuthority()方法返回的值,如果返回的值前缀为“Role\u”,则返回的值与“Role\u ADMIN”类似权限您可以使用方法注释检查权限和角色,如以下示例所示:

@PreAuthorize("hasRole('ROLE_ADMIN') and hasAuthority("READ")") 

Spring Security将通过用户的实现检查您授予的权限,然后,根据您的注释,Spring Security将代表您自动检查。

为了清楚起见,您可以检查https://www.baeldung.com/spring-security-granted-authority-vs-role

对于快速工作的实现,您可以查看下面的文章(我不会直接使用它,但您可以理解它的想法。您也可以使用权限,但简单的解决方案可能是下面的解决方案。):

https://www.baeldung.com/role-and-privilege-for-spring-security-registration

 类似资料:
  • 我是oAuth2安全系统的新手。关于访问REST资源的基于用户角色的授权,我有一个问题。我的互联网冲浪提供了关于oauth2的身份验证部分的输入。 让我提供给你困扰我的情况。

  • 在.NET core中,我尝试了一系列方法,例如在我的控制器方法中添加或以及使用基于策略的授权,在此我检查实现中的。 如果我在身份验证处理程序中设置了一些断点。当它被击中时,我可以看到“tester”和“developer”角色被列为IEnumerable下的项,如下所示。 因此,通过验证集合中和的值,我应该能够成功地在身份验证处理程序中进行授权,但这需要我反序列化声明值,这些声明值似乎只是JSO

  • 本文展示了如何根据不同的用户角色,在登录之后来重定向到不同的页面。 在 method-security项目的基础上,我们构建了一个role-base-login项目。 build.gradle 修改 build.gradle 文件,让我们的role-base-login项目成为一个新的项目。 修改内容也比较简单,修改项目名称及版本即可。 jar { baseName = 'role-bas

  • 我在身份管理方面有一个项目,我希望有人能给我指出正确的方向。这是基于角色的配置,基本上我需要知道如何根据某些用户属性(例如职位、部门)配置特定的应用程序,然后自动为该应用程序提出配置请求。该应用程序是一个断开连接的应用程序,将手动配置。 我们试图实现的是,一旦在 OIM 中创建了用户,并且如果他或她满足这些条件,OIM 将生成对应用程序的请求,以便为它们预配它们。有没有办法在 OIM 中实现此目的

  • 我有一个具有多个角色(ROLE1、ROLE2)的安全springboot应用程序。一个用户同时具有两个角色,而另一个用户只有一个角色。在成功登录用户被发送到登陆页面,在那里我想禁用元素,如果用户只有一个角色。 我试过用thymeleaf-extras-springsecurity3,但没有成功。这是我的代码: pom.xml 任何帮助都将不胜感激!谢谢!

  • 在我的Laravel 5.3设置中,我使用Bouner包,我定义了两个角色,和。登录后,客户将被重定向到,如在App\Http\Controller\Auth\LoginController.php下的中指定的。现在,如果具有角色的用户登录,他也会被重定向到,因为不会对用户角色进行任何区分。我在这里的目标是将管理员用户重定向到。 处理此问题的最佳解决方案是什么?这是我的尝试。 在路由中,在任何中间