代码拉取完成,页面将自动刷新
// 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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。