标题

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)

技术

Spring Boot 2、Spring Security 5、JWT

运行环境

IDEA+JDK8.0+MySQL5.0+

简述

Spring Boot 2 + Spring Security 5 + JWT 实现给RestApi增加认证控制

测试流程

下面对我们的程序进行简单的验证

1.请求获取用户列表接口: ​​ http://localhost:8080/users/userList接口,会收到401错误 ​​ <br>

{ "timestamp": 1567564486909, "status": 401, "error": "Unauthorized", "message": "Full authentication is required to access this resource", "path": "/users/userList" } curl ​​ http://localhost:8080/users/userList ​​ <br> 原因就是因为这个url没有授权,所以返回401<br>

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_linux

2.注册一个新用户<br>

curl -H "Content-Type: application/json" -X POST -d '{<br> "username": "admin",<br> "password": "password"<br> }' ​​ http://localhost:8080/users/signup ​​ <br>

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_linux_02

3.登录,会返回token,在http header中,Authorization: Bearer 后面的部分就是token<br>

curl -i -H "Content-Type: application/json" -X POST -d '{<br> "username": "admin",<br> "password": "password"<br> }' ​​ http://localhost:8080/login ​​ <br> 温馨提醒:这里的login方法是spring specurity框架提供的默认登录url

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_spring_03

4.用登录成功后拿到的token再次请求/users/userList接口<br>

4.1将请求中的XXXXXX替换成拿到的token<br> 4.2这次可以成功调用接口了<br> curl -H "Content-Type: application/json"<br> -H "Authorization: Bearer XXXXXX"<br> " ​​ http://localhost:8080/users/userList ​​ "

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_jwt_04

5.设置了1分钟后Token过期,如果1分钟后再次请求/users/userList接口返回Token过期的异常提示如下图:<br>


Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_java_05

6.集成Swagger-ui,方便前后端分离开发,默认访问地址: ​​ http://localhost:8080/swagger-ui.html ​​ <br>


Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_java_06

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_jwt_07

Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)_python_08

温馨提示:这里的登录接口还是使用的默认地址,如果你的token过期了,需要你重新登录生成新的token.<br>

下载地址

​ https://gitee.com/micai-code/springboot-springsecurity-jwt-demo.git ​

结束语

在使用的过程中,如有问题,可以添加真正讨论技术的QQ交流群,QQ群号为:715224124