/
mwsession.go
executable file
·148 lines (134 loc) · 3.42 KB
/
mwsession.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package lego
import (
"time"
//"encoding/json"
"github.com/mjiulee/go-sessions"
"github.com/valyala/fasthttp"
)
// const (
// LEGO_SESSION_TYPE_ADMIN = 1
// LEGO_SESSION_TYPE_WEB = 2
// LEGO_SESSION_TYPE_WAP = 3
// )
/*
* SESSION 会话管理中间件
————————————————————————
* session保存地方分2种,
1、redies
2.gosession中
*/
func middlewareCheckSession(next fasthttp.RequestHandler) fasthttp.RequestHandler {
return fasthttp.RequestHandler(func(ctx *fasthttp.RequestCtx) {
sess := sessions.StartFasthttp(ctx) // init the session
// 如果是单应用情况下
sessValues := sess.GetAll() // get all values from this session
isRedirect := false
for {
ltime, ok := sessValues["ltime"]
if ok {
if ltime.(int64)+7200 < time.Now().Unix() {
sessions.DestroyByID(sess.ID())
isRedirect = true
break
}
}
userid := sessValues["user_id"]
if userid != nil {
next(ctx)
} else {
isRedirect = true
break
}
break
}
if isRedirect {
authloginUrl := GetIniByKey(K_GGF_CONFIG_AUTH_SECTION, K_GGF_CONFIG_AUTH_LOGINURL)
ctx.Redirect(authloginUrl, 302)
}
})
}
/*
func middlewareWebCheckSession(next fasthttp.RequestHandler) fasthttp.RequestHandler {
return fasthttp.RequestHandler(func(ctx *fasthttp.RequestCtx) {
sess := sessions.StartFasthttp(ctx) // init the session
// 如果是单应用情况下
sessValues := sess.GetAll() // get all values from this session
isRedirect := false
for {
ltime, ok := sessValues["ltime"]
if ok {
if ltime.(int64)+7200 < time.Now().Unix() {
sessions.DestroyByID(sess.ID())
isRedirect = true
break
}
}
userid := sessValues["user_id"]
if userid != nil {
next(ctx)
} else {
isRedirect = true
break
}
break
}
if isRedirect {
//domain := GetIniByKey("HTTP", "DOMAIN")
ctx.Redirect("/user/login", 302)
}
})
}
func middlewareWapCheckSession(next fasthttp.RequestHandler) fasthttp.RequestHandler {
return fasthttp.RequestHandler(func(ctx *fasthttp.RequestCtx) {
sess := sessions.StartFasthttp(ctx) // init the session
// 如果是单应用情况下
sessValues := sess.GetAll() // get all values from this session
isRedirect := false
for {
ltime, ok := sessValues["ltime"]
if ok {
if ltime.(int64)+7200 < time.Now().Unix() {
sessions.DestroyByID(sess.ID())
isRedirect = true
break
}
}
userid := sessValues["user_id"]
if userid != nil {
next(ctx)
} else {
isRedirect = true
break
}
break
}
if isRedirect {
//domain := GetIniByKey("HTTP", "DOMAIN")
ctx.Redirect("/wap/login", 302)
}
})
}*/
// 通过content获取user_id
func SessionGetKeyIntVal(key string, ctx *fasthttp.RequestCtx) int64 {
sess := sessions.StartFasthttp(ctx) // init the session
sessValues := sess.GetAll() // get all values from this session
// fmt.Println("session: %s\n", sessValues)
keyval, ok := sessValues[key]
if ok && keyval != nil {
return keyval.(int64)
} else {
return -1
}
}
// 通过content获取user_id
func SessionGetKeyStringVal(key string, ctx *fasthttp.RequestCtx) string {
sess := sessions.StartFasthttp(ctx) // init the session
sessValues := sess.GetAll() // get all values from this session
// fmt.Println("session: %s\n", sessValues)
keyval := sessValues[key]
if keyval != nil {
return string(keyval.(string))
} else {
return ""
}
}