# blog **Repository Path**: strart-end/blog ## Basic Information - **Project Name**: blog - **Description**: Spring Boot+Vue实现的个人博客系统的后端接口部分 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: http://www.zhangb.top - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-05 - **Last Updated**: 2023-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # blog ## 介绍 Spring Boot + Vue2实现的个人博客系统,该项目为后端接口部分。使用Spring Security + JWT完成身份校验、权限管理、token认证刷新。项目实现了文章管理、文章分类、文章标签、归档、点赞、评论等功能。项目已经上线,地址为:http://www.zhangb.top blog ## 安装教程 1. 克隆项目到本地 ```bash git clone https://gitee.com/strart-end/blog.git ``` 2. 新建一个名为blog的数据库 3. 添加数据库表格 ```sql /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50724 (5.7.24) Source Host : localhost:3306 Source Schema : blog Target Server Type : MySQL Target Server Version : 50724 (5.7.24) File Encoding : 65001 Date: 07/07/2023 17:03:10 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for article -- ---------------------------- DROP TABLE IF EXISTS `article`; CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `description` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `context` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `author` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `create_time` date NOT NULL, `status` int(11) NOT NULL, `type_id` int(11) NOT NULL, `tag_id` int(11) NOT NULL, `love` int(11) NULL DEFAULT NULL, `watch` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `fk_article_tag`(`type_id`) USING BTREE, INDEX `fk_article_tag2`(`tag_id`) USING BTREE, CONSTRAINT `fk_article_type` FOREIGN KEY (`type_id`) REFERENCES `type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_article_tag2` FOREIGN KEY (`tag_id`) REFERENCES `tag` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for comment -- ---------------------------- DROP TABLE IF EXISTS `comment`; CREATE TABLE `comment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `author` varchar(33) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `context` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `article_id` int(11) NOT NULL, `parent_id` int(11) NOT NULL DEFAULT 0, `top_id` int(11) NOT NULL DEFAULT 0, `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `fk_comment_article`(`article_id`) USING BTREE, CONSTRAINT `fk_comment_article` FOREIGN KEY (`article_id`) REFERENCES `article` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for tag -- ---------------------------- DROP TABLE IF EXISTS `tag`; CREATE TABLE `tag` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for tb_user -- ---------------------------- DROP TABLE IF EXISTS `tb_user`; CREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `role` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'ROLE_user', `permissions` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'watch', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for type -- ---------------------------- DROP TABLE IF EXISTS `type`; CREATE TABLE `type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; ``` 4. 添加依赖包 ```xml org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.3.1 com.mysql mysql-connector-j runtime org.projectlombok lombok true io.jsonwebtoken jjwt 0.9.1 cn.hutool hutool-all 5.5.8 javax.xml.bind jaxb-api 2.3.0 javax.persistence persistence-api 1.0.2 com.alibaba druid 1.1.9 ``` 5. 配置application.yml文件 ```yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql:///blog?useSSL=false username: # your mysql username password: # your mysql password type: com.alibaba.druid.pool.DruidDataSource main: banner-mode: off mybatis: type-aliases-package: com.promise.pojo mapper-locations: classpath:mapper/*.xml jwt: # token有效期1天 expiration: 86400 secret: promise # 请求头中token的前缀 tokenHead: Bearer # token保存在请求头中的位置 tokenHeader: Authorization ``` ## 项目演示 ![index](./img/index.jpg) ![detail](./img/detail.jpg) ![article](./img/article.png) ![add](./img/add.jpg) ## SpringSecurity-Discrete 本人将Spring Security + JWT 部分抽取出来,单独成立的一个仓库,以便于后续项目开发可以直接使用,无需再次配置。只需在接口上添加相应注解即可。项目地址为:https://github.com/zhangb-top/SpringSecurity-Discrete SpringSecurity-Discrete