首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spring引导中基于角色的授权

spring引导中基于角色的授权
EN

Stack Overflow用户
提问于 2021-05-12 12:48:54
回答 3查看 8.5K关注 0票数 0

我对春靴很陌生。我需要在spring引导中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。每当调用api时,我将设置不同的访问(读取、添加、删除、编辑),需要检查访问权限和允许权限。我计划使用拦截器调用方法,让查询从DB获得访问权,并拒绝或访问api。还有其他更好的方法可以用来做同样的事情吗?

EN

回答 3

Stack Overflow用户

发布于 2021-05-12 13:33:13

如果您正在使用Security,您可以使用方法安全注释(如@PreAuthorize@PostAuthorize )来处理它。甚至将它们合并到新的注释中。

首先,您的用户需要实现UserDetails,然后您应该根据您的角色和权限结构实现getAuthorities()方法-- Security基本上检查getAuthority()方法返回的是什么,如果返回的值以"ROLE_" (如"ROLE_ADMIN" )作为前缀,则将作为角色处理,如果它没有以"ROLE_“作为前缀,它将作为权限进行处理,您可以使用方法注释来检查权限和角色,如下例所示:

代码语言:javascript
复制
@PreAuthorize("hasRole('ROLE_ADMIN') and hasAuthority("READ")") 

Security将通过用户的getAuthorities()实现来检查您的授权,然后根据您的注释,它将由Security 代表您自动检查。

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

为了快速实现,您可以查看下面的文章(我不会直接使用它,但您可以理解这个想法。此外,您还可以使用权限,但简单的解决方案可能是下面的解决方案。):

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

票数 2
EN

Stack Overflow用户

发布于 2021-05-12 12:58:39

票数 1
EN

Stack Overflow用户

发布于 2021-05-12 16:03:10

您可以创建一个自定义注释来处理每个角色的请求。关于如何实现的更多细节,我可以阅读这个文章

在api中将有格式:

代码语言:javascript
复制
@GetMapping(...)
@YouCustomAnnotation("roleName")
public void doSomeThing(){
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67504020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档