简介
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。JSON Web Token 入门教程 - 阮一峰,这篇文章可以帮你了解JWT的概念。本文重点讲解Spring Boot 结合 jwt ,来实现前后端分离中,接口的安全调用。
快速上手
之前的文章已经对 Spring Security 进行了讲解,这一节对涉及到 Spring Security 的配置不详细讲解。若不了解 Spring Security 先移步到 Spring Boot Security 详解。
建表
1 | DROP TABLE IF EXISTS `user`; |
项目结构
1 | resources |
关键代码
pom.xml
1 | <dependency> |
application.yml
1 | spring: |
SecurityConfig
1 |
|
JwtTokenUtil
1 | /** |
JwtTokenFilter
1 |
|
AuthServiceImpl
1 |
|
关键代码就是这些,其他类代码参照后面提供的源码地址。
验证
登录,获取token
1 | curl -X POST -d "username=admin&password=123456" http://127.0.0.1:8080/auth/login |
返回
1 | eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTU1NDQ1MzUwMX0.sglVeqnDGUL9pH1oP3Lh9XrdzJIS42VKBApd2nPJt7e1TKhCEY7AUfIXnzG9vc885_jTq4-h8R6YCtRRJzl8fQ |
不带token访问资源
1 | curl -X POST -d "name=zhangsan" http://127.0.0.1:8080/admin/hi |
返回,拒绝访问
1 | { |
携带token访问资源
1 | curl -X POST -H "Authorization: eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTU1NDQ1MzUwMX0.sglVeqnDGUL9pH1oP3Lh9XrdzJIS42VKBApd2nPJt7e1TKhCEY7AUfIXnzG9vc885_jTq4-h8R6YCtRRJzl8fQ" -d "name=zhangsan" http://127.0.0.1:8080/admin/hi |
返回正确
1 | hi zhangsan , you have 'admin' role |
源码
https://github.com/gf-huanchupk/SpringBootLearning/tree/master/springboot-jwt