基于角色或权限进行访问控制

hasAuthority 方法

如果当前的主体具有指定的权限,则返回 true,否则返回 false

在配置类设置当前访问地址有哪些

    @Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin()    //自定义自己编写的登陆页面.loginPage("/login.html")  //登陆页面设置.loginProcessingUrl("/user/login") //登陆访问路径.defaultSuccessUrl("/test/index").permitAll() //登陆成功之后,跳转路径.and().authorizeRequests().antMatchers("/","/test/hello","/user/login").permitAll() //设置哪些路径可以直接访问,不需要认证//当前登陆用户,只有具有admin权限才可以访问这个路径.antMatchers("/test/index").hasAuthority("admins").anyRequest().authenticated().and().csrf().disable(); //关闭csrf防护}

在UserDetailsService,把返回User对象设置权限

 @Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//调用userMapper方法,根据用户名查询数据库QueryWrapper<Users> wrapper = new QueryWrapper<>();//where username = ?wrapper.eq("username",username);Users users = usersMapper.selectOne(wrapper);//判断if (users==null)//数据库没有用户名,认证失败{throw new UsernameNotFoundException("用户名不存在!");}List<GrantedAuthority> auths = AuthorityUtils.commaSeparatedStringToAuthorityList("admins");return new User(users.getUsername(),new BCryptPasswordEncoder().encode(users.getPassword()),auths);}

测试


没有访问权限 403



hasAnyAuthority 方法

如果当前的主体有任何提供的“角色”的话,返回true.

 @Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin()    //自定义自己编写的登陆页面.loginPage("/login.html")  //登陆页面设置.loginProcessingUrl("/user/login") //登陆访问路径.defaultSuccessUrl("/test/index").permitAll() //登陆成功之后,跳转路径.and().authorizeRequests().antMatchers("/","/test/hello","/user/login").permitAll() //设置哪些路径可以直接访问,不需要认证
//                //当前登陆用户,只有具有admin权限才可以访问这个路径
//                .antMatchers("/test/index").hasAuthority("admins").antMatchers("/test/index").hasAnyAuthority("admins”,“manager").anyRequest().authenticated().and().csrf().disable(); //关闭csrf防护}

hasRole 方法

如果用户具备给定角色就允许访问,否则出现 403。
如果当前主体具有指定的角色,则返回 true。

从源码中我们可以看出,前面会自动加个ROLE_

hasAnyRole

表示用户具备任何一个条件都可以访问。

[SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole相关推荐

  1. 用命令创建表空间、用户,并为用户授权、收回权限。

    oracle中如何删除用户? Oracle中使用DROP USER来删除用户,如果使用DROP USER CASCADE那么用户的对象也同时被删除掉.为了达到删除用户的效果而又不影响对用户下的对象的使 ...

  2. mysql 移除权限_MySQL用户授权及删除权限

    ▼ CREATE DATABASE IF NOT EXISTS `wordpress`; GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localh ...

  3. mysql取消权限设置_mysql用户授权与权限撤销

    mysql用户授权与权限撤销 实验练习: 1.允许root从192.168.4.0/24网段访问,对所有库/表有完全控制权限,需要验证的密码为xujunxian. 2.建立一个管理账号dba007,对 ...

  4. MySQL用户权限总结【用户授权必会】

    文章目录 一.MySQL用户权限 二.用户权限介绍 1.权限级别 2.权限实现 3.权限分布 4.查询权限表 三.用户权限实战 1.查看用户权限信息 2.用户创建和授权 创建MySQL用户和权限* 刷 ...

  5. mysql数据库添加角色_用户系统 – MySQL数据库中的多个角色

    所以我正在尝试创建一个基本的用户系统,在这个系统中我希望用户能够拥有多个角色. 比方说,我的角色如下:管理员,活动组织者,捐赠者 将这些多个角色分配给用户然后检查他们是否具有任何这些角色以显示某些权限 ...

  6. linux命令 创建目录权限,linux创建用户并设置目录权限

    [TOC] <linux创建用户并设置目录权限>首发牧马人博客转发请加此提示 常用命令 用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:c ...

  7. [SpringSecurity]web权限方案_用户授权_注解使用

    注解使用 @Secured 判断用户是否具有角色,可以访问方法,另外需要注意的是这里匹配的字符串需要添加前缀"ROLE_". 使用注解先要开启注解功能! 启动类(配置类)开启注解 ...

  8. [SpringSecurity]web权限方案_用户授权_自定义403页面

    自定义403页面 unauth.html <!DOCTYPE html> <html lang="en"> <head><meta cha ...

  9. mysql权限控制禁止用户远程连接_mysql权限控制—新建用户允许其远程连接

    mysql为了保证安全性,在默认情况下,只允许在本地登录,在日常工作中,经常会需要用户远程连接使用该数据库,因此便需要创建新的用户,给其分配相应的权限,如下: 注:关键字都应该大写,尽量养成好习惯 创 ...

最新文章

  1. spring获取webapplicationcontext,applicationcontext几种方法详解(转载)
  2. Python 包安装和 postgresql 的一些问题
  3. R绘制Rank-abundance曲线
  4. 使用MLX90640自制红外热像仪(三):图像插值、图像彩色编码
  5. JAVA工程师常用算法_算法工程师必须要知道的8种常用算法思想
  6. 帮设计师与工程师更好沟通的实用技巧
  7. 2017夏季达沃斯今日开幕,人工智能元素尤其突出
  8. C#中实现对象的深拷贝
  9. javascript中的this讲解
  10. Awesomplete 屌爆了
  11. Ethercat解析(二)之获取、编译、安装(debian7)
  12. php文章远程图片,php实现异步将远程链接上内容(图片或内容)写到本地的方法
  13. MySQL配置文件详解
  14. 电商erp那个收费模式最合算?
  15. 数据库连接池——基本原理
  16. STM32单片机OLED俄罗斯方块单片机小游戏
  17. 宏定义是什么?为什么要进行宏定义?宏定义的格式
  18. 运营之光:我的互联网运营方法论与自白学习总结(思维导图)
  19. 架设游戏私服——内网穿透工具frp
  20. JavaWeb购物系统(七)购物系统主页,商品的管理

热门文章

  1. java单精度实型_Java的八种基本类型及其各种数据类型的相互转换
  2. Android之国际化部分文字生效而部分文字没有生效的坑
  3. Android之javax.net.ssl.SSLPeerUnverifiedException: Hostname ip not verified:解决办法
  4. sql count用法_SQL学习笔记3:count(*)函数
  5. java把对象转成json_java 把对象 对象转换成json字符串 | 学步园
  6. linux电脑培训,电脑培训Linux服务器初始化Shell
  7. modbus调试工具 linux,linux libmodbus的移植
  8. mysql数据库时间突然是12小时制_为什么存入mysql数据库中的timestamp,晚了13或14个小时...
  9. 复工之后,如何让自己的时间更值钱
  10. 人类史上20个“最强大脑”