完善登录流程
上一篇文章 我们已经完成了注册的流程,现在只要 照着之前的方法 完善我们的登录机制 即可
定义登录的参数
1 | c复制代码type ParamLogin struct { |
定义 登录的controller
1 | javascript复制代码func LoginHandler(c *gin.Context) { |
定义 登录的logic
1 | go复制代码func Login(login *models.ParamLogin) error { |
最后 看下登录的dao层
1 | go复制代码func Login(user *models.User) error { |
封装我们的响应方法
前面完成了登录和注册的方法以后 我们会发现 流程上 还有点冗余,响应方法有些重复 代码,这里 尝试优化一下
首先定义我们的 response code
1 | go复制代码package controllers |
然后定义我们的response函数
1 | go复制代码package controllers |
顺便要去dao层 把我们的 错误 定义成常量
1 | go复制代码package mysql |
最后 看下controller层如何处理
这里主要是关注一下 errors.Is 这个写法
1 | go复制代码package controllers |
最后看下我们的效果:
实现JWT的认证方式
关于JWT 可以自行查找相关概念,这里不重复叙述 仅实现一个JWT的 登录认证
1 | go复制代码package jwt |
剩下的就是 在登录成功的时候 返回这个token 给客户端即可
找到我们的logic层:
1 | go复制代码func Login(login *models.ParamLogin) (string, error) { |
在controller层 将我们的token返回:
1 | scss复制代码func LoginHandler(c *gin.Context) { |
最后看下效果:
验证token
1 | go复制代码//验证jwt机制 |
本文转载自: 掘金