顺晟科技
2021-08-28 09:40:35
209
使用开发开发后端api,使用的是杜松子酒框架。上线之后需要用到权限控制,就得先把登录功能加上。
添加登录过程中,引入了杜松子酒的会议间件:https://github.com/gin-contrib/sessions
并使用最简单的甜饼干来保存会议
版的代码如下:
函数用户登录(c *gin .上下文()接口{},*常见.apiError){ 0
var参数=类型。用户{}
err :=c.BindJSON(m)
如果出错!=零
返回"请求错误",常见wrappandlog(' parase请求数据错误,错误)
}
u :=用户。用户登录(*参数)
如果u.Uid!='' {
会话:=会话。默认值(c)
会话。设置(“login_user”,u)
会话。保存()
返回你,零
}
返回零,零
}
func userInfo(c *gin .上下文()接口{},*常见.apiError){ 0
会话:=会话。默认值(c)
u :=会话。获取(“登录_用户”)
洛格鲁。调试('登录用户,会话,会话获取(“登录_用户”)
返回你,零
}
不管怎么测试都无法通过会议获取登录用户信息嘿,饼干里面也没有相关的数据,后面经过查看会议的源代码和调试,发现/厂商/github。com/gorilla/session/store去的如下方法中有报错,通过断点看出其中呃!=零
保存功能。请求。回应者,
会话*会话)错误{
编码,err :=securecookie .EncodeMulti(会话。名称(),会话。价值观,
南编解码器.)
如果出错!=零
返回错误
}
http .SetCookie(w,NewCookie(会话。名称(),编码,会话。选项))
返回零
}
打印出的错误信息如下:
secureoki :错误-由by: securecookie:错误引起-由: gob:类型未注册到接口:类型引起。用户
经过网上搜索,添加如下代码解决
gob .注册(类型。用户{})
凝块是开发包自带的一个数据结构序列化的编码/解码工具。
对对象进行编码和解码,需要先调用gob .注册进行类型注册,比如自定义结构,映射[字符串]接口{}{}等等
02
2022-09
21
2022-06
04
2022-06
04
2022-06
30
2022-05
23
2022-05