首页 > 编程语言 > 详细

SpringSecurity注解的使用

时间:2021-02-05 19:19:13      阅读:43      评论:0      收藏:0      [点我收藏+]

@Secured

判断用户具有某个角色,可以访问方法

  1. 开启注解功能

    使用注解先要开启注解功能!可以在启动类上,也可以在配置类上添加

    @EnableGlobalMethodSecurity(securedEnabled = true)
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
  2. 在控制器方法上添加注解

    @GetMapping("update")
    @Security({”ROLE_sale“, "ROLE_manager"})
    public String update(){
    

    判断是否具有角色,另外需要注意的是这里匹配的字符串需要添加前缀“ROLE_",因为在源码中SpringSecurity对hasRole方法做了如下处理

    技术分享图片

@PreAuthorize

在进入方法前进行权限验证

  1. 开启方法前后验证注解

    @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
    

    也就是 prePostEnable = true

  2. 在控制器方法上面添加注解

    @GetMapping
    @PreAuthorize("hasAnyAuthority(‘admin‘)")
    public String update(){
    

@PostAuthorize

在进入方法后进行权限验证

  1. 开始验证注解,略

  2. 在控制器方法上面添加注解

    @GetMapping
    @PostAuthorize("hasAnyAuthority(‘admin‘)")
    public String update(){
    

@PreFilter

进入控制器之前对数据进行过滤

@GetMapping
@PostAuthorize("hasAnyAuthority(‘admin‘)")
@PreFilter(value = "filterObject.id%2==0")
public String update(@RequestBody List<UserInfo> list){
    list.forEach(t -> {
		System.out.println(t.getId() + ":" + t.getName());
    })

上述注解的作用就是,如果 UserInfo 的 id 能被 2 整除,就传递 list 中

@PostFilter

@GetMapping
@PostAuthorize("hasAnyAuthority(‘admin‘)")
@PreFilter(value = "filterObject.username==‘admin‘")
public String update(@RequestBody List<UserInfo> list){ 
    ArrayList<User> list = new ArrayList<>();
    list.add(new User(1, "admin"));
	list.add(new User(1, "user"));
    return list
}

上述注解的作用就是,留下 list 中 username 为 admin 的对象

SpringSecurity注解的使用

原文:https://www.cnblogs.com/hemou/p/14379062.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!