You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dongfeng-pay/jhmerchant/controllers/keep_session.go

52 lines
1.3 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/***************************************************
** @Desc : This file for 保持会话
** @Time : 19.11.29 13:55
** @Author : Joker
** @File : keep_session
** @Last Modified by : Joker
** @Last Modified time: 19.11.29 13:55
** @Software: GoLand
****************************************************/
package controllers
import (
"github.com/astaxie/beego"
"dongfeng-pay/jhmerchant/sys/enum"
)
type KeepSession struct {
beego.Controller
}
// 生成随机md5值客户端和服务端各保存一份
// 客户端每次请求都将重写md5值
// 若用户在30分钟内没有操作行为或连续操作时间超过3小时则自动退出
func (c *KeepSession) Prepare() {
// 以免session值不是string类型而panic
defer func() {
if err := recover(); err != nil {
c.DelSession(enum.UserSession)
c.Ctx.Redirect(302, "/")
}
}()
us := c.GetSession(enum.UserSession)
uc := c.GetSession(enum.UserCookie)
if us == nil || uc == nil {
c.DelSession(enum.UserSession)
c.Ctx.Redirect(302, "/")
}
if uc.(string) == "" {
c.DelSession(enum.UserSession)
c.Ctx.Redirect(302, "/")
}
_, b := c.Ctx.GetSecureCookie(uc.(string), enum.UserCookie)
//utils.LogNotice(fmt.Sprintf("客户端cookie%s服务端cookie%s", cookie, uc.(string)))
if !b {
c.DelSession(enum.UserSession)
c.Ctx.Redirect(302, "/")
}
}