29 lines
787 B
Go
29 lines
787 B
Go
package authser
|
|
|
|
import "github.com/gin-gonic/gin"
|
|
|
|
// TokenExpiredCode 上游约定:token 失效。
|
|
const TokenExpiredCode = 1000
|
|
|
|
// IsSessionExpiredCode 是否为会话失效类业务码。
|
|
func IsSessionExpiredCode(code int) bool {
|
|
switch code {
|
|
case TokenExpiredCode, 1002, 1012, 6001: // InvalidToken / NoToken / InvalidateToken / 用户不存在
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// RecoverContentSession 会话失效后清理旧 cookie 并重新建立游客会话,调用方随后重试一次原请求。
|
|
func RecoverContentSession(c *gin.Context, code int) bool {
|
|
if c == nil || !IsSessionExpiredCode(code) {
|
|
return false
|
|
}
|
|
ClearAuthCookies(c)
|
|
for _, name := range authCookieNames() {
|
|
dropRequestCookie(c, name)
|
|
}
|
|
return EnsureGuestOnEnter(c) != nil
|
|
}
|