Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring boot中基于角色的授权_Java_Spring Boot_Authorization_Role Based Access Control - Fatal编程技术网

Java spring boot中基于角色的授权

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 boot中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。我将设置不同的访问权限(读取、添加、删除、编辑) 无论何时调用api,都需要检查访问权限并允许权限。 我计划使用拦截器来调用具有查询的方法,以从DB获得访问权,并拒绝或访问api。
有没有其他更好的方法可以用于相同的目的?

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

  • OAuth(参考-)
  • Spring安全角色和权限(参考-)

  • 如果您使用的是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提供了带有