golang go-session SetsessionID 以及直接返回MD5的修改

 刚接触 GO 两天, 用了echo 使用官方推荐的 session 不好使,(估计是我不会用). 找到了一个国人兄弟的库,这里强烈推荐一下,很不错.

https://github.com/go-session/echo-session

因为个人业务罗技需要作了如下修改:

1.将原作者返回的base64 修改为直接返回 md5

go-session\session\session.go

import 增加 "crypto/md5"

三十二行左右,将 return newUUID() 修改为下面

sessionID: func(_ context.Context) string {
return Sha1String(newUUID()) //修改 默认返回uuid 修改为 md5值  by 职业菜鸟 20190429
},
 
随便找个位置 新增 下面函数
func Sha1String(data string) string { //新增 获取字符串sha1 备用  by 职业菜鸟 20190429
sha1 := sha1.New()
sha1.Write([]byte(data))
return hex.EncodeToString(sha1.Sum([]byte(nil)))
}
搜索下面函数:
func (m *Manager) decodeSessionID(value string) (string, error) {
直接函数顶增加:
return value, nil //修改 丢弃SessionID解码操作 直接放回MD5 SessionID by 职业菜鸟 20190429
 
搜索下面函数:
func (m *Manager) encodeSessionID(sid string) string {
直接函数顶增加:
return sid //修改 丢弃SessionID编码操作 直接放回MD5 SessionID by 职业菜鸟 20190429
 

2.增加 SetsessionID 函数.

我看了文档 也简单读了源码,发现 go-session\session\session.go 是有

// SetSessionID Set callback function to generate session id
func SetSessionID(handler IDHandlerFunc) Option {
return func(o *options) {
o.sessionID = handler
}
}
 
应该是我不会用,没跑成功………
 
小刀小斧的改一下
 
go-session\echo-session\session.go
增加:
func SetsessionID(ctx echo.Context, sessionid string) { //新增 设置sessionid  by 职业菜鸟 20190429
ctx.Get(manageKey).(*session.Manager).SetsessionID2(sessionid)
}
 
go-session\session\session.go
增加函数:
func (m *Manager) SetsessionID2(sessionid string) { //新增 设置sessionid  by 职业菜鸟 20190429
m.opts.sessionID = func(_ context.Context) string {
return sessionid
}
}
 
 
大概这些吧,记性差了,随便记一记.

 

发表评论

您的电子邮箱地址不会被公开。