前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringSecurity集成JWT实现后端认证授权保姆级教程-环境搭建篇

SpringSecurity集成JWT实现后端认证授权保姆级教程-环境搭建篇

作者头像
知识浅谈
发布2024-01-08 09:27:32
1390
发布2024-01-08 09:27:32
举报
文章被收录于专栏:分享学习分享学习

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法

视频教程手把手视频教程

下一篇:SpringSecurity集成JWT实现后端认证授权保姆级教程-数据准备篇

🤞为什么这个东西我要分多篇写,我想说的是这个真不简单🤞 无论是shiro还是SpringSecurity,想要熟悉的使用,我们都要来回的摸索,各种认证和授权类,完全看的一塌糊涂,我不能说讲的很明白,只能说按教程一步步来能带你实现SpringSecurity集成JWT实现后端认证授权。

🎈肯定先创建项目

直接springboot创建

在这里插入图片描述
在这里插入图片描述

springboot选用2.7.6版本

在这里插入图片描述
在这里插入图片描述

创建后打开

🎈再来创建各种文件夹和文件

之所以创建文件夹,下边要用到

在这里插入图片描述
在这里插入图片描述

🎈再来引入各种依赖

pom.xml 如果自己项目路径和我的不一样:只需要引入下边的properties 和dependencies 有mysql依赖,redis依赖,security依赖,swagger依赖,相对来说比较全了

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.7.6</spring-boot.version>
        <jwt.verison>4.3.0</jwt.verison>
        <fastjson.version>2.0.27</fastjson.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.16</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>${jwt.verison}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>${fastjson.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.example.demo.DemoApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

🎈安装mysql和redis

  • 安装Mysql(使用默认的3306端口) 在mysql中创建test数据库 设置账号:root 密码:password
  • 安装Redis 不用设置密码(生产环境需要设置密码,使用默认的6379端口)

🎈填写配置文件

application.yml

代码语言:javascript
复制
# 应用服务 WEB 访问端口
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC  # 数据库连接URL
    username: root  # 数据库用户名
    password: password # 数据库密码
    driver-class-name: com.mysql.cj.jdbc.Driver  # MySQL驱动程序类名
    type: com.alibaba.druid.pool.DruidDataSource  # 指定使用Druid连接池
    druid:
      initial-size: 5  # 初始化时建立物理连接的个数
      max-active: 20  # 最大连接池数量
      min-idle: 5  # 最小连接池数量
      max-wait: 60000  # 获取连接时最大等待时间,单位毫秒
      validation-query: SELECT 1 FROM DUAL  # 测试连接是否可用的SQL语句
      test-while-idle: true  # 保持连接池活跃地状态
      time-between-eviction-runs-millis: 60000  # 检查空闲连接的时间间隔,单位毫秒
      min-evictable-idle-time-millis: 300000  # 连接在连接池中最小空闲时间,单位毫秒
      filters: stat,wall,log4j2  # 配置Druid监控和防御SQL注入的过滤器
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      database: 0
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

mybatis-plus:
  mapper-locations: classpath:/mapper/*.xml # Mapper.xml文件所在路径
  typeAliasesPackage: com.example.demo.domain # 实体类包名
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志输出方式
    map-underscore-to-camel-case: true # 开启驼峰命名规则映射

🎈最后让项目跑起来

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到这里项目就运行起来了 上图里运行程序之后有一个密码 Using generated security password: 248b72f4-198a-48ef-929e-1f3f2cd51c79 这个是springsecurity自带的密码,当我们访问接口的时候要用到的,默认用户名是user

🍚写个接口测试一下

在controller文件夹创建一个controller

代码语言:javascript
复制
package com.example.demo.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@Api(tags = "测试类")
@RestController
@RequestMapping("/test")
public class TestController {


    @ApiOperation(value = "测试方法")
    @GetMapping("/test")
    public String test(){
      return "test";
    }

}

重新运行程序 访问 http://localhost:8080/test/test 但是直接默认跳到了登录页 http://localhost:8080/login

在这里插入图片描述
在这里插入图片描述

输入用户名 user 和后台生成的密码

在这里插入图片描述
在这里插入图片描述

到此就创建好后端项目基本框架了。

🍚总结

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🎈肯定先创建项目
  • 🎈再来创建各种文件夹和文件
  • 🎈再来引入各种依赖
  • 🎈安装mysql和redis
  • 🎈填写配置文件
  • 🎈最后让项目跑起来
  • 🍚写个接口测试一下
  • 🍚总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档