一. 概述
權(quán)限是大部分的后臺(tái)管理系統(tǒng)都需要實(shí)現(xiàn)的功能瞻凤,用戶控制不同的角色能夠進(jìn)行的不同的操作。Spring Security的可以進(jìn)行用戶的角色權(quán)限控制猿诸,也可以進(jìn)行用戶的操作權(quán)限控制骚灸。
一. 啟動(dòng)類配置
/**
* 開啟方法的注解安全校驗(yàn)公你。
* securedEnabled @Secured("ROLE_abc") 該注解是Spring security提供的
* jsr250Enabled @RolesAllowed("admin") 該注解是 JSR250 支持的注解形式
* prePostEnabled @PreAuthorize("hasAuthority('user:add')
*/
@SpringBootApplication
@EnableGlobalMethodSecurity(securedEnabled = true, jsr250Enabled = true, prePostEnabled = true)
public class SecurityApplication {
public static void main(String[] args) {
SpringApplication.run(SecurityApplication.class, args);
}
}
二. 基于角色的權(quán)限控制
-
@RoleAllowed
@RoleAllowed
在查詢用戶的權(quán)限的時(shí)候,構(gòu)建角色的時(shí)候必須是ROLE_admin
使用的時(shí)候可以:@RoleAllowed("admin")
或者@RoleAllowed("ROLE_admin")
-
@Secured
@Secured
在查詢用戶的權(quán)限的時(shí)候驯嘱,構(gòu)建的時(shí)候必須是ROLE_admin
使用的時(shí)候只能是@Secured({"ROLE_admin"})
-
@PreAuthorize
@PreAuthorize
構(gòu)建的時(shí)候必須是ROLE_admin
,ROLE_system
使用的時(shí)候只能是@PreAuthorize("hasRole('ROLE_admin') or|and hasRole('ROLE_system')")
@PreAuthorize("hasRole('admin')")
三. 基于操作的權(quán)限控制
在構(gòu)建操作權(quán)限的時(shí)候的時(shí)候不需要任何的前綴镶苞。例如:user:list
user:add
在使用 @PreAuthorize
的時(shí)候,形式是:@PreAuthorize("hasAuthority('user:list')")