zoukankan      html  css  js  c++  java
  • SpringSecurity设置角色和权限

    在UserDetailsService使用loadUserByUsername构建当前登录用户时,可以选择两种授权方法,即角色授权和权限授权,对应使用的代码是hasRole和hasAuthority,而这两种方式在设置时也有不同,下面介绍一下:

    1. 角色授权:授权代码需要加ROLE_前缀,controller上使用时不要加前缀
    2. 权限授权:设置和使用时,名称保持一至即可
    在UserDetailsService中设置权限:
    @Component
    public class MyUserDetailService implements UserDetailsService {
      @Autowired
      private PasswordEncoder passwordEncoder;
    
      @Override
      public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException {
        User user = new User(name,
            passwordEncoder.encode("123456"),
            AuthorityUtils.commaSeparatedStringToAuthorityList("read,ROLE_USER"));//设置权限和角色
        // 1. commaSeparatedStringToAuthorityList放入角色时需要加前缀ROLE_,而在controller使用时不需要加ROLE_前缀
        // 2. 放入的是权限时,不能加ROLE_前缀,hasAuthority与放入的权限名称对应即可
        return user;
      }
    }
    
    在controller中为方法添加权限控制:
    //写权限
    @GetMapping("/write")
    @PreAuthorize("hasAuthority('write')")
    public String getWrite() {
        return "have a write authority";
    }
    
    //读权限
    @GetMapping("/read")
    @PreAuthorize("hasAuthority('read')")
    public String readDate() {
        return "have a read authority";
    }
    
    //读写权限
    @GetMapping("/read-or-write")
    @PreAuthorize("hasAnyAuthority('read','write')")
    public String readWriteDate() {
        return "have a read or write authority";
    }
    
    //admin角色
    @GetMapping("/admin-role")
    @PreAuthorize("hasRole('admin')")
    public String readAdmin() {
        return "have a admin role";
    }
    
    //user角色
    @GetMapping("/user-role")
    @PreAuthorize("hasRole('USER')")
    public String readUser() {
        return "have a user role";
    }
    
  • 相关阅读:
    sql server实用要点全解
    C# EntityFramwork(Model First)使用要点
    c# linq查询语句详细使用介绍
    c# webapi2 实用详解
    create-react-app脚手架中配置sass
    redux使用教程详细介绍
    react-router4.x 实用例子(路由过渡动画、代码分割)
    react-router4.x 组件和api介绍
    leetcode-mid-backtracking -22. Generate Parentheses-NO
    leetcode-mid-backtracking-17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/xlizi/p/13601320.html
Copyright © 2011-2022 走看看