该笔记记录了SpringBoot整合Jwt、SpringSecurity实现登录认证的基本流程和注意的细节,是我学习过程的一个总结,如有错误敬请指出。
一、引入Springboot依赖项
工欲善其事,必先利其器。首先在spring boot的pom文件中加入各种所需要的依赖项
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring-boot启动依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mysql数据库依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis启动依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<!--mbg-mybatisGenerator依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.1</version>
</dependency>
<!--分页查询工具pagehelper依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.5</version>
</dependency>
<!--druid连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.14</version>
</dependency>
<!--在线文档api-Swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!--hutool工具包依赖-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.9</version>
</dependency>
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--redis-data依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--springSecurity依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--Jwt依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
额外的,我的JDK版本是JDK11,在最后会出现 javax/xml/bind/DatatypeConverter 报错,需要加上以下依赖防止报错
由于jdk版本原因,报错javax/xml/bind/DatatypeConverter_jdk11 datatypeconverter-优快云博客
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
上面最主要的就是SpringSecurity和Jwt以及防止报错的依赖,其他的依赖根据自己的需求自行引入
二、yml文件自定义配置
可选操作----对yml文件进行自定义配置,如果不进行配置,之后在方法中自行输入变量名也可以
# 自定义jwt key
jwt:
tokenHeader: Authorization #JWT存储的请求头
expiration: 600 #JWT的超期限时间
tokenHead: aTokenHead #JWT负载中拿到开头
secret: lovelyJava #JWT加解密使用的密钥
# 自定义路径白名单
secure:
ignored:
urls: #安全路径白名单
- /swagger-ui/
- /swagger-resources/**
- /**/v2/api-docs
- /**/*.html
- /**/*.js
- /**/*.css
- /**/*.png
- /favicon.ico
- /actuator/**
- /druid/**
- /admin/**
Jwt的结构:

Jwt只适合向web端传递一些非敏感信息,因为base64编码是可逆的,很容易被破解。
Jwt通常用来设计用户认证和授权系统,还有我们通常说的单点登录等。
三、实现Jwt、SpringSecurity配置
配置里面调用的深度很深,每次调用都按顺序放在子标题下,看完子标题再看父标题
基本每一行代码都有注释
3.1 SecurityConfig
声明filterChain这个bean实现自定义过滤
@Bean SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
httpSecurity.authorizeRequests()的作用是允许基于使用HttpServletRequest限制访问
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests();
返回一个registry对象,对该对象进行操作,设置允许访问控制。除此之外,httpSecurity还有很多用法:
SpringSecurity——HttpSecurity常用方法-优快云博客
/

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



