Java spring boot中基于角色的授权
我不熟悉弹簧靴。我需要在spring boot中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。我将设置不同的访问权限(读取、添加、删除、编辑) 无论何时调用api,都需要检查访问权限并允许权限。 我计划使用拦截器来调用具有查询的方法,以从DB获得访问权,并拒绝或访问api。Java spring boot中基于角色的授权,java,spring-boot,authorization,role-based-access-control,Java,Spring Boot,Authorization,Role Based Access Control,我不熟悉弹簧靴。我需要在spring boot中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。我将设置不同的访问权限(读取、添加、删除、编辑) 无论何时调用api,都需要检查访问权限并允许权限。 我计划使用拦截器来调用具有查询的方法,以从DB获得访问权,并拒绝或访问api。 有没有其他更好的方法可以用于相同的目的?对于授权,也可以有以下两种方法: OAuth(参考-) Spring安全角色和权限(参考-) 如果您使用的是Spring安全性,您可以使用方法安全性注释来处理它,如@P
有没有其他更好的方法可以用于相同的目的?对于授权,也可以有以下两种方法:
如果您使用的是Spring安全性,您可以使用方法安全性注释来处理它,如
@PreAuthorize
,@posauthorize
。。甚至将它们组合成新的注释
首先,您的用户需要实现UserDetails,然后您应该根据您的角色和权限结构实现getAuthorities()
方法Spring Security基本上检查getAuthority()方法返回的值,如果返回值前缀为“Role\u”
如“Role\u ADMIN”
如果它没有前缀“ROLE”,则将作为角色进行处理。它将作为权限进行处理
您可以使用方法注释检查权限和角色,如以下示例所示:
@PreAuthorize("hasRole('ROLE_ADMIN') and hasAuthority("READ")")
而Spring Security将通过用户的getAuthories()
实现检查您授予的权限,然后,根据您的注释,它将由Spring Security代表您自动检查。
为了清楚起见,您可以查看
对于快速工作的实现,您可以查看下面的文章(我不会直接使用它,但您可以理解这个想法。您也可以使用权限,但简单的解决方案可能是下面的解决方案。):
您可以创建自定义注释来处理每个角色的请求。我希望您可以阅读本文,了解有关如何实现的更多详细信息 在api中,将采用以下格式:
@GetMapping(...)
@YouCustomAnnotation("roleName")
public void doSomeThing(){
}
如果用户的角色与注释中的角色定义匹配,将调用此api,如果用户的角色不匹配,服务器将返回404代码。有关基于LDAP的身份验证,请参见此:要查看Spring安全性的基础知识,请参见以下内容:您好,感谢您的回复,我检查了这些链接,它们与身份验证相关。我将使用Okta进行身份验证。我想实现授权谢谢,我将使用Okta进行身份验证,我可以用Okta身份验证尝试上述方法吗?没问题:)。我从未与okta进行过集成,但看起来okta提供了带有