zoukankan      html  css  js  c++  java
  • SpringSecurity注解的使用

    @Secured

    判断用户具有某个角色,只有具有相应角色才可以调用方法

    1. 开启注解功能

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

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

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

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

      image-20210205161848163

    @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 的对象

    作者: 贺墨于
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    模仿Linux内核kfifo实现的循环缓存
    FFmpeg + SoundTouch实现音频的变调变速
    C++标准库实现WAV文件读写
    PHP写的一个轻量级的DI容器类(转)
    android App抓包工具的应用(转)
    Dell 服务器阵列扩容【经验分享(转)】
    hexo静态博客的安装及应用实践记录
    centos 6.5 升级php到5.6.17版本
    前端框架记录
    Virtual DOM 虚拟DOM的理解(转)
  • 原文地址:https://www.cnblogs.com/hemou/p/14379062.html
Copyright © 2011-2022 走看看