基于 Spring Boot + Spring Security + JWT + MyBatis-Plus 的用户认证服务。
src/main/java/com/auth/
├── controller/ # 接口层
├── dto/ # 请求/响应数据对象
├── entity/ # 数据库实体
├── exception/ # 全局异常处理
├── mapper/ # MyBatis-Plus Mapper
├── security/ # Spring Security 配置 & JWT 过滤器
├── service/ # 业务逻辑
└── util/ # JWT 工具类
数据库名:db_web,执行以下 SQL 创建用户表:
# 启动服务(端口 30000)
mvn spring-boot:run
# 打包
mvn clean package -DskipTests
# 上传到服务器
scp target/auth-demo-1.0.0.jar root@<服务器IP>:/opt/app.jar
# 服务器后台运行
nohup java -jar /opt/app.jar > /opt/app.log 2>&1 &
# 查看日志
tail -f /opt/app.log
# 停止服务
kill $(ps aux | grep 'app.jar' | grep -v grep | awk '{print $2}')
在 /etc/nginx/sites-enabled/default 的 server 块中添加:
location /api/ {
proxy_pass http://localhost:30000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重载 Nginx:
nginx -t && systemctl reload nginx
POST /api/auth/login
Content-Type: application/json
{
"username": "admin",
"password": "123456"
}
响应:
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9...",
"username": "admin",
"expiresIn": 86400000
}
}
POST /api/auth/logout
Authorization: Bearer <token>
响应:
{
"code": 200,
"message": "退出登录成功",
"data": null
}
GET /api/auth/get
Authorization: Bearer <token>
响应:
{
"code": 200,
"message": "获取用户信息成功",
"data": "已认证用户"
}
| 配置项 | 说明 | 默认值 |
|---|---|---|
server.port | 服务端口 | 30000 |
jwt.secret | JWT 签名密钥 | 见 application.yml |
jwt.expiration | Token 有效期(毫秒) | 86400000(24小时) |