代码拉取完成,页面将自动刷新
package middelware
import (
"context"
"gitee.com/qian/guser/define"
"gitee.com/qian/guser/model"
"gitee.com/qian/guser/shared"
"github.com/gogf/gf/crypto/gmd5"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/guid"
"time"
)
var Session = sessionService{}
type sessionService struct {
}
const (
// 用户信息存放在Session中的Key
sessionKeyUser = "SessionKeyUser"
hashKey = "__HASH__"
)
func (s *sessionService) SetUser(ctx context.Context, user *model.Guser) error {
//生成key
key := s.GenToken(user.Id)
err := shared.Context.Get(ctx).Cache.Set(key, user, 24*time.Hour)
if err == nil {
//设置到上下文
shared.Context.SetData(ctx, g.Map{
"token": key,
})
}
return err
}
func (s *sessionService) GetUser(ctx context.Context) *model.Guser {
shareCtx := shared.Context.Get(ctx)
if shareCtx != nil {
var (
data *define.GUserMiddlewareTokenReq
)
if err := shareCtx.Request.Parse(&data); err != nil {
return nil
}
v, err := shared.Context.Get(ctx).Cache.Get(data.Token)
if err != nil {
return nil
}
var user *model.Guser
_ = gconv.Struct(v, &user)
return user
}
return nil
}
func (s *sessionService) RemoveUser(ctx context.Context) error {
shareCtx := shared.Context.Get(ctx)
if shareCtx != nil {
var (
data *define.GUserMiddlewareTokenReq
)
if err := shareCtx.Request.Parse(&data); err != nil {
return nil
}
_, err := shared.Context.Get(ctx).Cache.Remove(data.Token)
if err != nil {
return err
}
}
return nil
}
//生成token
func (s *sessionService) GenToken(id int) string {
key := guid.S()
key, _ = gmd5.EncryptString(key + hashKey)
key = gconv.String(id) + key
return key
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。