springboot security jwt mybatisplus 整合 vue (1)

开始正式进行代码开发,首先确定我们后台基本的技术栈。

  • 数据库mysql
  • 连接池默认的hikari
  • 数据持久层mybatisplus
  • 鉴权spingsecurity
  • 缓存redis
  • 序列化工具jackson

确定后,使用idea创建一个项目。

1选择springboot  点击next

 2.确定基本的包名

 3创建项目成功后删除无用文件

4复制需要的依赖至项目中

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

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

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

<!--        <dependency>-->
<!--            <groupId>org.springframework.security</groupId>-->
<!--            <artifactId>spring-security-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--        </dependency>-->

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

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

        <!-- processor -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- 表单验证-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <!-- spring-boot aop依赖配置引入 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

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

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
    </dependencies>

5导入完成后 创建一个测试控制器检测我们项目是否正常

6启动项目时发现如下问题

 大概意思我们引入了数据库 但是在配置文件中没有配置 我们找一个空数据库配置一下

7重新启动并访问 可以正常运行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个基于Spring BootSpring SecurityJWT和OAuth2的示例项目,实现了用户注册、登录、注销、刷新令牌、访问受保护资源等功能。 ## 技术栈 - Spring Boot 2.5.4 - Spring Security 5.5.1 - Spring Data JPA 2.5.4 - MySQL 8.0.26 - JWT 0.11.2 - OAuth2 2.5.4 - Lombok 1.18.20 ## 数据库配置 在MySQL数据库中新建一个名为`springboot_security_jwt_oauth2`的数据库,执行以下SQL语句创建用户表: ```sql CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `username` varchar(255) NOT NULL COMMENT '用户名', `password` varchar(255) NOT NULL COMMENT '密码', `enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用', `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; ``` ## 项目结构 ``` ├── src/main/java │ └── com │ └── example │ └── demo │ ├── DemoApplication.java │ ├── config │ │ ├── JwtConfig.java │ │ ├── MyPasswordEncoder.java │ │ └── SecurityConfig.java │ ├── controller │ │ ├── LoginController.java │ │ └── UserController.java │ ├── dao │ │ ├── UserRepository.java │ │ └── UserRoleRepository.java │ ├── entity │ │ ├── User.java │ │ └── UserRole.java │ ├── exception │ │ ├── JwtAuthenticationException.java │ │ └── UserNotFoundException.java │ ├── service │ │ ├── AuthService.java │ │ ├── UserService.java │ │ └── impl │ │ ├── AuthServiceImpl.java │ │ └── UserServiceImpl.java │ ├── util │ │ ├── JwtTokenUtil.java │ │ └── JwtUserDetailsService.java │ └── web │ ├── JwtAuthenticationEntryPoint.java │ ├── JwtAuthenticationFilter.java │ ├── JwtAuthorizationFilter.java │ ├── RestResponse.java │ └── UserNotFoundExceptionHandler.java └── src/main/resources ├── application.properties ├── static └── templates ``` - `config`:Spring SecurityJWT的配置类 - `controller`:控制器类,处理请求和响应 - `dao`:数据访问层,使用Spring Data JPA实现 - `entity`:实体类 - `exception`:异常类 - `service`:服务层接口和实现类 - `util`:工具类,包括JWT生成和解析、用户认证等 - `web`:Web相关类,包括异常处理、JWT过滤器等 ## API文档 ### 用户注册 - URL:`/api/register` - Method:POST - Request: ```json { "username": "test", "password": "123456" } ``` - Response: ```json { "code": 200, "message": "注册成功", "data": { "id": 1, "username": "test", "password": "$2a$10$8uFJ3zZB.Sd7K3YB2K3Y/OfVhF4oJXeS3j0R2A3RG1c2UJWuXkSdC", "enabled": true, "createTime": "2021-10-01T08:16:28.000+00:00" } } ``` ### 用户登录 - URL:`/api/login` - Method:POST - Request: ```json { "username": "test", "password": "123456" } ``` - Response: ```json { "code": 200, "message": "登录成功", "data": { "accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX1VTRVIiLCJleHAiOjE2MzI5NjQwODh9.5Syf8x3CZaLl0yHrXyXjJ4Qz4jJnVR3S4yIDg6GQ6puknFkJ9QWgJzJ5pB0tZzHfrGz2K1VJvJkHrOjLUQJWzA", "tokenType": "Bearer", "expiresIn": 3600 } } ``` ### 用户注销 - URL:`/api/logout` - Method:POST - Request Header: ``` Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX1VTRVIiLCJleHAiOjE2MzI5NjQwODh9.5Syf8x3CZaLl0yHrXyXjJ4Qz4jJnVR3S4yIDg6GQ6puknFkJ9QWgJzJ5pB0tZzHfrGz2K1VJvJkHrOjLUQJWzA ``` - Response: ```json { "code": 200, "message": "注销成功" } ``` ### 刷新令牌 - URL:`/api/refresh` - Method:POST - Request Header: ``` Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX1VTRVIiLCJleHAiOjE2MzI5NjQwODh9.5Syf8x3CZaLl0yHrXyXjJ4Qz4jJnVR3S4yIDg6GQ6puknFkJ9QWgJzJ5pB0tZzHfrGz2K1VJvJkHrOjLUQJWzA ``` - Response: ```json { "code": 200, "message": "刷新令牌成功", "data": { "accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX1VTRVIiLCJleHAiOjE2MzI5NjQxMzQsImlhdCI6MTYzMjk2MDUzNH0.2hWq8dLJ7s9G6MqQ8Gg7kNvGzeOaJQFb4eBZ9RcB6N8lP3kglz8W_KXMh8r4oJZkzy5HOVZrB5YSEKNxZyY5lg", "tokenType": "Bearer", "expiresIn": 3600 } } ``` ### 获取当前用户信息 - URL:`/api/user/info` - Method:GET - Request Header: ``` Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX1VTRVIiLCJleHAiOjE2MzI5NjQxMzQsImlhdCI6MTYzMjk2MDUzNH0.2hWq8dLJ7s9G6MqQ8Gg7kNvGzeOaJQFb4eBZ9RcB6N8lP3kglz8W_KXMh8r4oJZkzy5HOVZrB5YSEKNxZyY5lg ``` - Response: ```json { "code": 200, "message": "获取用户信息成功", "data": { "id": 1, "username": "test", "password": null, "enabled": true, "createTime": "2021-10-01T08:16:28.000+00:00", "authorities": [ { "authority": "ROLE_USER" } ] } } ``` ### 获取所有用户信息 - URL:`/api/user/all` - Method:GET - Response: ```json { "code": 200, "message": "获取所有用户信息成功", "data": [ { "id": 1, "username": "test", "password": null, "enabled": true, "createTime": "2021-10-01T08:16:28.000+00:00", "authorities": [ { "authority": "ROLE_USER" } ] } ] } ``` ## 完整代码 完整代码请参考[GitHub](https://github.com/zhongshijun/springboot-security-jwt-oauth2)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值