Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 @预授权安全角色批注_Java_Spring_Spring Security_Spring Mvc Test - Fatal编程技术网

Java @预授权安全角色批注

Java @预授权安全角色批注,java,spring,spring-security,spring-mvc-test,Java,Spring,Spring Security,Spring Mvc Test,我正在努力理解一些Spring安全代码。我也是Spring Security的新手,我想我缺少一些基本的东西 我在其中一个类上有注释: @Controller @RequestMapping("/download-resource") @PreAuthorize(value="hasRole('LINKS_ADMIN')") public class DownloadResourcesController extends BaseHtmlController {..} 我读到了@PreAu

我正在努力理解一些Spring安全代码。我也是Spring Security的新手,我想我缺少一些基本的东西

我在其中一个类上有注释:

@Controller
@RequestMapping("/download-resource")
@PreAuthorize(value="hasRole('LINKS_ADMIN')")
public class DownloadResourcesController extends BaseHtmlController 
 {..}
我读到了
@PreAuthorize
及其逻辑。 我仍然无法理解Spring security从何处检索定义的角色字符串:
“LINKS\u ADMIN”
。它的定义是什么

谢谢, ray。

这些角色是用户登录时分配给的角色(权限)。这些将由实现返回

它们是表单
集合中的一个。这些角色是用户登录时分配给的角色(权限)。这些将由实现返回


它们是一种形式
集合它可以是你想要的任何东西。。。这些是应用程序中使用的角色,可以由您选择。一般来说,它们被分配给一个用户。但是我在整个项目中查找了这个术语——“链接管理”。找不到它的任何声明。用户有角色,spring security会检查这些角色。
@PreAuthorize
标记中的内容是要对照当前用户检查的元数据。如果用户没有该角色,它将拒绝访问。这里没有编译时检查,只有运行时,如果你的系统中没有这个角色,它可以很好地编译和部署,但是没有人可以访问。我想我错过了一些基本的东西。用户如何在系统中扮演此角色?用户在哪里定义它?取决于您的系统。一般来说,我会说是数据库。但它可以是文件,LDAP,XML,一些自定义机制。它可以是任何你想要的。。。这些是应用程序中使用的角色,可以由您选择。一般来说,它们被分配给一个用户。但是我在整个项目中查找了这个术语——“链接管理”。找不到它的任何声明。用户有角色,spring security会检查这些角色。
@PreAuthorize
标记中的内容是要对照当前用户检查的元数据。如果用户没有该角色,它将拒绝访问。这里没有编译时检查,只有运行时,如果你的系统中没有这个角色,它可以很好地编译和部署,但是没有人可以访问。我想我错过了一些基本的东西。用户如何在系统中扮演此角色?用户在哪里定义它?取决于您的系统。一般来说,我会说是数据库。但它可以是文件、LDAP、XML和一些自定义机制。值得注意的是,这些角色名称在编译时常量中定义得非常理想,例如不同
role
类的子类上的
public static final String
s,或者作为
enum
值。这可以避免字符串输入错误带来的很多麻烦。@chrylis是的,使用
字符串输入的应用程序可能会导致一些错误。理想情况下,权限也不会直接基于组名,因为组名会发生变化,以后很难扩展访问权限。通常最好是拥有可以授予组的
特权
,并将它们作为代码中的常量。我有一个带有enum的类,其中包含LINKS\u ADMIN角色。但是Spring安全如何链接??它的定义是什么?我将我的问题编辑为注释,这些角色名称在编译时常量中进行了理想的定义,例如不同
role
类的子类上的
public static final String
s,或作为
enum
值。这可以避免字符串输入错误带来的很多麻烦。@chrylis是的,使用
字符串输入的应用程序可能会导致一些错误。理想情况下,权限也不会直接基于组名,因为组名会发生变化,以后很难扩展访问权限。通常最好是拥有可以授予组的
特权
,并将它们作为代码中的常量。我有一个带有enum的类,其中包含LINKS\u ADMIN角色。但是Spring安全如何链接??它的定义是什么?我已编辑了我的问题
    for (Group group : groups) {
        grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_" + group.getName().toUpperCase()));
    }
SecurityContextHolder.getContext().getAuthentication().getAuthorities();