一、@Secured
作用:用户具有某个角色,可以访问方法
使用:
在启动类或配置内开启注解
@EnableGlobalMethodSecurity(securedEnabled = true)
在Controller的方法上加注解(注意要在角色名前加上ROLE_)
@RestController
public class MyController {
@RequestMapping(value = "/test")
@Secured({"ROLE_normal","ROLE_admin"})
public String test()
{
return "test";
}
}
二、@PreAuthorize
作用:进入方法前验证权限
使用:
在启动类或配置内开启注解
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)
在controller的方法上添加注解
@RestController
public class MyController {
@RequestMapping(value = "/test")
@PreAuthorize("hasAnyAuthority('admins')")
public String test()
{
return "test";
}
}
三、@PostAuthorize
作用:在方法执行后再进行权限验证,适合验证带有返回值的权限
使用:
在启动类或配置内开启注解
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)
在controller的方法上添加注解
@RestController
public class MyController {
@RequestMapping(value = "/test")
@PostAuthorize("hasAnyAuthority('admins')")
public String test()
{
return "test";
}
}
四、@PostFilter
作用:权限验证之后对数据进行过滤(对方法返回数据进行过滤)
@PostFilter("filterObject.username == 'myname'")
五、@PreFilter
作用:进入控制器之前对数据进行过滤(传入方法数据进行过滤)
@PreFilter(value = "filterObject.id%2==0")