个人博客项目笔记_03
1|01. 登录
1|11.1 接口说明
接口url:/login
请求方式:POST
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
account | string | 账号 |
password | string | 密码 |
返回数据:
1|21.2 JWT
登录使用JWT技术。
jwt 可以生成 一个加密的token,做为用户登录的令牌,当用户登录成功之后,发放给客户端。
请求需要登录的资源或者接口的时候,将token携带,后端验证token是否合法。
jwt 由三部分组成:A.B.C
A:Header,{"type":"JWT","alg":"HS256"} 固定
B:playload,存放信息,比如,用户id,过期时间等等,可以被解密,不能存放敏感信息
C: 签证,A和B加上秘钥 加密而成,只要秘钥不丢失,可以认为是安全的。
jwt 验证,主要就是验证C部分 是否合法。
依赖包:
工具类:
jwtToken
:这是一个私钥,用于签发和验证 JWT。createToken
方法:用于创建 JWT。它接收一个用户 ID,然后使用 JWT 标准库Jwts
的JwtBuilder
来构建 JWT。在构建 JWT 时,指定了签发算法为 HS256(HMACSHA256),并使用之前定义的私钥进行签名。然后设置 JWT 的声明(claims),包括用户 ID 和签发时间,还设置了 JWT 的过期时间为当前时间加上一天。最后,调用compact()
方法生成 JWT 字符串并返回。checkToken
方法:用于检测 JWT 的合法性。它接收一个 JWT 字符串作为参数,然后使用 JWT 标准库Jwts
的parser()
方法创建一个解析器,并设置解析器的签名秘钥为之前定义的私钥。然后调用parse()
方法解析 JWT 字符串,如果解析成功,则返回 JWT 中的声明(claims),否则返回 null。
1|31.3 Controller
@RequestBody
主要有以下作用:
- 接收请求体内容:在处理 HTTP 请求时,请求体中的数据可以包含各种格式的数据,例如 JSON、XML、文本等。使用
@RequestBody
注解可以告诉 Spring 框架将请求体中的数据绑定到方法参数上,以便在方法内部进行处理。下面是一个简单的示例:
在这个示例中,
@PostMapping
注解用于处理 HTTP POST 请求,路径为 "/create",方法名为createUser
。方法的参数user
使用了@RequestBody
注解,表示该参数将会从请求体中获取数据,并将其转换为User
对象。
1|41.4 Service
md5加密的依赖包:
1|51.5 登录参数,redis配置,统一错误码
2|0spring.redis.host=localhost:指定了 Redis 服务器的主机地址为 localhost,即 Redis 服务器运行在本地。
3|0spring.redis.port=6379:指定了 Redis 服务器的端口号为 6379,这是 Redis 默认的端口号。
3|11.6 测试
使用postman测试,因为登录后,需要跳转页面,进行token认证,有接口未写,前端会出现问题。
4|02. 获取用户信息
4|12.1 接口说明
接口url:/users/currentUser
请求方式:GET
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
Authorization | string | 头部信息(TOKEN) |
返回数据:
4|22.2 Controller
@RequestHeader("Authorization")
是 Spring MVC 中的一个注解,用于从 HTTP 请求头中获取指定名称的值,通常用于获取用户认证信息。在 RESTful API 开发中,常常会使用 JWT(JSON Web Token)或其他类似的认证方式来验证用户身份。这些认证信息通常会包含在请求的 Authorization 头中,以确保请求的安全性。
currentUser(@RequestHeader("Authorization") String token):
获取 HTTP 请求头中名为 "Authorization" 的值,并将其赋给方法参数
token
4|32.3 Service
4|42.4 LoginUserVo
4|52.5 测试
5|03. 退出登录
5|13.1 接口说明
接口url:/logout
请求方式:GET
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
Authorization | string | 头部信息(TOKEN) |
返回数据:
5|23.2 Controller
5|33.3 Service
RedisTemplate
是 Spring Data Redis 提供的一个用于操作 Redis 的模板类,它简化了与 Redis 的交互操作。通过RedisTemplate
,开发人员可以方便地进行 Redis 数据的读取、写入、更新和删除等操作,而无需处理 Redis 的连接管理、序列化等底层细节。redisTemplate.delete("TOKEN_"+token)
:这行代码使用了 RedisTemplate 对象调用了 delete 方法,删除了 Redis 中以 "TOKEN_" 开头的键名为 token 的信息。通常来说,这个 token 是用于识别用户身份的,通过删除这个 token 相关的信息,实现了用户的注销操作。
5|43.4 测试
__EOF__

本文链接:https://www.cnblogs.com/zyj3955/p/18127283.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2021-04-10 关于ECharts图表反复修改都无法显示的解决方案