06-spring boot 2.6.2 spring security 权限注解相关(下)

更多关注:JeeGit 5.0 企业级快速开发平台

首先了解些内置的权限方法

  • hasRole 含有某角色(String role)非ROLE_开头
  • hasAnyRole 含任意角色(String… roles)
  • hasAuthority 含有某权限(String authority) ,权限标识
  • hasAnyAuthority
  • permitAll 允许所有访问
  • denyAll 不允许所有访问
  • isAnonymous 可匿名不登录访问
  • isAuthenticated 身份认证后访问
  • isRememberMe 记住我用户访问
  • isFullyAuthenticated 非匿名且非记住我允许访问

hasRole,对应 public final boolean hasRole(String role) 方法,含义为必须含有某角色(非ROLE_开头),如有多个的话,必须同时具有这些角色,才可访问对应资源。
hasAnyRole,对应 public final boolean hasAnyRole(String… roles) 方法,含义为只具有有某一角色(多多个角色的话,具有任意一个即可),即可访问对应资源。
hasAuthority,对应 public final boolean hasAuthority(String authority) 方法,含义同 hasRole,不同点在于这是权限,而不是角色,区别就在于权限往往带有前缀(如默认的ROLE_),而角色只有标识。
hasAnyAuthority,对应 public final boolean hasAnyAuthority(String… authorities) 方法,含义同 hasAnyRole,不同点在于这是权限,而不是角色,区别就在于权限往往带有前缀(如默认的ROLE_),而角色只有标识
permitAll,对应 public final boolean permitAll() 方法,含义为允许所有人(可无任何权限)访问。
denyAll,对应 public final boolean denyAll() 方法,含义为不允许任何(即使有最大权限)访问。
isAnonymous,对应 public final boolean isAnonymous() 方法,含义为可匿名(不登录)访问。
isAuthenticated,对应 public final boolean isAuthenticated() 方法,含义为身份证认证后访问。
isRememberMe,对应 public final boolean isRememberMe() 方法,含义为记住我用户操作访问。
isFullyAuthenticated,对应 public final boolean isFullyAuthenticated() 方法,含义为非匿名且非记住我用户允许访问。
设计者可选取适当的控制方式和级别进行控制,也可以事先定义好角色、权限等权限体系,供开发者使用。

相关注解开启

@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity

其他注解相关参考:

https://www.jb51.net/article/220630.htm

(1)@Secured

相当于配置类中的hasRole()方法。

@Secured 是专门用于判断是否具有某个角色。能写在方法上或类上。参数要以 ROLE_开头。

// 只有 有角色abc的登录者才能访问这个接口
@Secured(value=“ROLE_abc”)
@RequestMapping (value = “/login1”)
public String login() {
return “login11”;
}

(2)@PreAuthorize / @PostAuthorize

@PreAuthorize / @PostAuthorize 都是方法级别的注解。

@PreAuthorize 表示访问方法或类在执行之前先判断权限,大多数情况下使用这个注解,注解的参数和access() 方法参数取值相同,都是权限表达式。

@PostAuthorize 表示方法或类执行结束后判断权限,此注解很少使用。

// 开启springSecurity注解支持
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)

// 只有 有角色abc的登录者才能访问这个接口,参数是access表达式
@PreAuthorize(“hasRole(‘abc’)”) // 可以写成 @PreAuthorize(“hasRole(‘ROLE_abc’)”)
@RequestMapping (value = “/login1”)
public String login() {
return “login11”;
}

你可能感兴趣的:(spring,spring,boot,后端)