# 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
## 安装教程
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
```
## 项目演示




## SpringSecurity-Discrete
本人将Spring Security + JWT 部分抽取出来,单独成立的一个仓库,以便于后续项目开发可以直接使用,无需再次配置。只需在接口上添加相应注解即可。项目地址为:https://github.com/zhangb-top/SpringSecurity-Discrete
