首页 > 其他分享 >大年初二学习SpringBoot之权限管理

大年初二学习SpringBoot之权限管理

时间:2024-02-11 22:22:42浏览次数:37  
标签:SpringBoot spring 含义 访问 大年初二 security 权限 id

1 增加spring-security依赖

目前市面上主流的权限框架是:spring-security和shiro,shrio使用起来更简单,而spring-security的功能更强大。

苏三商城项目选择的权限框架是:spring-security。

首先要加入spring-security的相关依赖包。

在项目中的pom.xml文件中增加如下依赖:

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>

刷新maven之后,重新启动项目。

访问之前的swagger地址:http://localhost:8011/swagger-ui/index.html,发现已经访问不了了,跳转到了一个登录页面: 

说明成功了。

2 开启全局方法权限控制

首先需要开启全局方法权限控制。

增加一个SpringSecurityConfig类:

@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SpringSecurityConfig {
}

在上面增加@Configuration、@EnableWebSecurity和@EnableGlobalMethodSecurity三个注解。

3 使用@PreAuthorize注解

接下来,我们需要对接口做权限验证。

在spring-security中已经给我们封装了一个@PreAuthorize注解,我们只需要使用该注解就可以进行权限验证。

@PreAuthorize注解的value是Spring-EL表达式类型的字符串,它的值可以包含下面几种方法。

  • hasRole:含义为必须含有某角色(非ROLE_开头),如有多个的话,必须同时具有这些角色,才可访问对应资源。
  • hasAnyRole:含义为只具有某一角色(多个角色的话,具有任意一个即可),即可访问对应资源。
  • hasAuthority: 含义同 hasRole,不同点在于这是权限,而不是角色,区别就在于权限往往带有前缀(如默认的ROLE_),而角色只有标识。
  • hasAnyAuthority:含义同 hasAnyRole,不同点在于这是权限,而不是角色,区别就在于权限往往带有前缀(如默认的ROLE_),而角色只有标识。
  • permitAll:含义为允许所有人(可无任何权限)访问。
  • denyAll:含义为不允许任何(即使有最大权限)访问。
  • isAnonymous:含义为可匿名(不登录)访问。
  • isAuthenticated:含义为身份证认证后访问。
  • isRememberMe:含义为记住我用户操作访问。
  • isFullyAuthenticated:含义为非匿名且非记住我用户允许访问。

在用户查询接口上增加@PreAuthorize注解,使用hasRole方法:

/**
* 通过id查询用户信息
*
* @param id 系统ID
* @return 用户信息
*/
@PreAuthorize("hasRole('User')")
@ApiOperation(notes = "通过id查询用户信息", value = "通过id查询用户信息")
@GetMapping("/findById")
public UserEntity findById(Long id) {
return userService.findById(id);
}

其中设置的角色为User。

我们需要一个账号能够登录成功。

为了测试起来更加方便,我们需要增加一个用于做权限测试的账号。

在mall-mgt的application.yml配置文件中增加如下配置:

spring
security:
user:
name: admin
password: 123456
roles:
User

增加一个用户名是:admin,密码是:123456的账号,角色名是User。

然后重启项目。

 

标签:SpringBoot,spring,含义,访问,大年初二,security,权限,id
From: https://www.cnblogs.com/cmx2012/p/18013573

相关文章

  • springboot整合redis报错:链接失败;org.springframework.data.redis.RedisConnectionFai
    错误原因:开启了保护模式解决方案:关闭保护模式和防火墙具体步骤:1、打开你的redis配置文件,做出如下修改2.开启进程守护yes代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。3.......
  • SharePoint Online 查看独立权限的项目
    前言最近碰到这么个需求,用户想要查看SharePointOnline站点里,有多少文档是断开权限的。正文1.我们先要进入到站点权限,如下图:2.然后进入高级权限设置,如下图:3.点击showtheseitems,如下图:4.这样我们可以看到哪些文档库里面有独立权限的项目了,......
  • Springboot项目中使用Elasticsearch的RestClient
    上一篇介绍了Elasticsearch的入门《5000字详说Elasticsearch入门(一)》,本篇介绍Springboot如何集成使用Elasticsearch。分为3步:配置properties文件、引入pom依赖、配置RestHighLevelClient类。1、选择ES的ClientAPI我们知道Elasticsearch是一款RestfulAPI风格的分布式搜索引擎......
  • 【SpringBootStarter】自定义全局加解密组件
    【SpringBootStarter】目的了解SpringBootStarter相关概念以及开发流程实现自定义SpringBootStarter(全局加解密)了解测试流程优化最终引用的效果:<dependency><groupId>com.xbhog</groupId><artifactId>globalValidation-spring-boot-starter</artifactId>......
  • SpringBoot 报错无法连接到Redis (Unable to connect to Redis)
    UnabletoconnecttoRedisSpringBoot3.1.2报错:UnabletoconnecttoRedis背景在搭建项目开发环境的时候,进行Redis相关的单元测试时发现无法连接到远程的Redis服务器。并且报错UnabletoconnecttoRedisRedis所在服务器UbuntuService64位20.04.06问题排查:检查基......
  • 在 SpringBoot 项目中多数据源切换
    使用dynamic-datasource-spring-boot-starter库添加依赖<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.4.1</version></dependency>添加配置......
  • SpringBoot脚手架使用
    介绍脚手架可以帮助我们快速创建SpringBoot项目。Spring提供的脚手架页面地址,核心为https://github.com/spring-io/initializr这个项目,https://github.com/spring-io/start.spring.io这个项目在此基础上提供了一些额外配置,并提供了前端页面。内部是通过https://start.spri......
  • SpringBoot简介
    1、为什么有SpringBoot?J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。2、SpringBoot是什么?是一个一站式整合所有应用框架的框架;并且完美整合Spring技术栈。SpringBoot来简化开发,约定大于配置,去繁从简,justrun就能创建一个......
  • 【Spring】SpringBoot3+SpringBatch5.xの構築
    ■概要  ■POMのXMLの設定<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=&qu......
  • SpringBoot 优雅实现超大文件上传,通用方案
    文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有比较好的上传......