SpringBoot整合Jwt、SpringSecurity实现登录认证以及Swgger相应配置

该笔记记录了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的原理_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常用方法-优快云博客

/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值