1 Star 1 Fork 0

linngc / center.gf

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
middleware_session.go 2.33 KB
一键复制 编辑 原始数据 按行查看 历史
linngc 提交于 2023-08-18 11:37 . add:添加新表实体
// Package middleware
// @Link https://gitee.com/linngc/webos.gf
// @Copyright Copyright (c) 2022 webos CLI
// @Author linngc
// @License
package middleware
import (
"context"
entity "gitee.com/linngc/center.gf/internal/gendao/entity/system/basic"
"gitee.com/linngc/center.gf/internal/service/middleware"
)
type sSession struct{}
const (
sessionKeyUser = "SessionKeyUser" // 用户信息存放在Session中的Key
sessionKeyLoginReferer = "SessionKeyReferer" // Referer存储,当已存在该session时不会更新。用于用户未登录时引导用户登录,并在登录后跳转到登录前页面。
)
func init() {
middleware.RegisterSession(NewSession())
}
func NewSession() *sSession {
return &sSession{}
}
// SetSysUser 设置用户Session.
func (s *sSession) SetSysUser(ctx context.Context, user *entity.SysUser) error {
return middleware.BizCtx().Get(ctx).Session.Set(sessionKeyUser, user)
}
// GetSysUser 获取当前登录的用户信息对象,如果用户未登录返回nil。
func (s *sSession) GetSysUser(ctx context.Context) *entity.SysUser {
customCtx := middleware.BizCtx().Get(ctx)
if customCtx != nil {
v, _ := customCtx.Session.Get(sessionKeyUser)
if !v.IsNil() {
var user *entity.SysUser
_ = v.Struct(&user)
return user
}
}
return &entity.SysUser{}
}
// RemoveSysUser 删除用户Session
func (s *sSession) RemoveSysUser(ctx context.Context) error {
customCtx := middleware.BizCtx().Get(ctx)
if customCtx != nil {
return customCtx.Session.Remove(sessionKeyUser)
}
return nil
}
// SetLoginReferer 设置LoginReferer
func (s *sSession) SetLoginReferer(ctx context.Context, referer string) error {
if s.GetLoginReferer(ctx) == "" {
customCtx := middleware.BizCtx().Get(ctx)
if customCtx != nil {
return customCtx.Session.Set(sessionKeyLoginReferer, referer)
}
}
return nil
}
// GetLoginReferer GetLoginReferer 获取LoginReferer
func (s *sSession) GetLoginReferer(ctx context.Context) string {
customCtx := middleware.BizCtx().Get(ctx)
if customCtx != nil {
return customCtx.Session.MustGet(sessionKeyLoginReferer).String()
}
return ""
}
// RemoveLoginReferer 删除LoginReferer
func (s *sSession) RemoveLoginReferer(ctx context.Context) error {
customCtx := middleware.BizCtx().Get(ctx)
if customCtx != nil {
return customCtx.Session.Remove(sessionKeyLoginReferer)
}
return nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/linngc/center.gf.git
git@gitee.com:linngc/center.gf.git
linngc
center.gf
center.gf
v0.2.12

搜索帮助

344bd9b3 5694891 D2dac590 5694891