Skip to content

Commit 1e9c550

Browse files
fix: 解决登录之后 cookie 没有刷新的漏洞
1 parent 0c6774b commit 1e9c550

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

internal/api/v1/session/profile.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/kataras/iris/v12/context"
88
)
99

10-
func (h Handler) UpdateProfile() iris.Handler {
10+
func (h *Handler) UpdateProfile() iris.Handler {
1111
return func(ctx *context.Context) {
1212
var req ProfileSetter
1313
if err := ctx.ReadJSON(&req); err != nil {
@@ -50,7 +50,7 @@ func (h Handler) UpdateProfile() iris.Handler {
5050
ctx.Values().Set("data", "ok")
5151
}
5252
}
53-
func (h Handler) UpdatePassword() iris.Handler {
53+
func (h *Handler) UpdatePassword() iris.Handler {
5454
return func(ctx *context.Context) {
5555
var pass PasswordSetter
5656
if err := ctx.ReadJSON(&pass); err != nil {

internal/api/v1/session/session.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,6 @@ func (h *Handler) IsLogin() iris.Handler {
7676
return
7777
}
7878
} else {
79-
if err := session.Man.ShiftExpiration(ctx); err != nil {
80-
ctx.StatusCode(iris.StatusInternalServerError)
81-
ctx.Values().Set("message", fmt.Errorf("shift expiration falied, err: %v", err))
82-
return
83-
}
8479
ctx.StatusCode(iris.StatusOK)
8580
ctx.Values().Set("data", loginUser != nil)
8681
}
@@ -167,8 +162,14 @@ func (h *Handler) Login() iris.Handler {
167162
ctx.Values().Set("token", token)
168163
return
169164
default:
170-
session := server.SessionMgr.Start(ctx)
171-
session.Set("profile", profile)
165+
sId := ctx.GetCookie(server.SessionCookieName)
166+
if sId != "" {
167+
ctx.RemoveCookie(server.SessionCookieName)
168+
ctx.Request().Header.Del("Cookie")
169+
}
170+
sess := server.SessionMgr.Start(ctx)
171+
ctx.SetCookieKV(server.SessionCookieName, sess.ID())
172+
sess.Set("profile", profile)
172173
}
173174

174175
ctx.StatusCode(iris.StatusOK)

internal/server/server.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
"github.com/sirupsen/logrus"
3232
)
3333

34-
const sessionCookieName = "SESS_COOKIE_KUBEPI"
34+
const SessionCookieName = "SESS_COOKIE_KUBEPI"
3535

3636
var SessionMgr *sessions.Sessions
3737

@@ -149,7 +149,7 @@ func (e *KubePiServer) setUpStaticFile() {
149149
}
150150

151151
func (e *KubePiServer) setUpSession() {
152-
SessionMgr = sessions.New(sessions.Config{Cookie: sessionCookieName, AllowReclaim: true, Expires: time.Duration(e.config.Spec.Session.Expires) * time.Hour})
152+
SessionMgr = sessions.New(sessions.Config{Cookie: SessionCookieName, AllowReclaim: true, Expires: time.Duration(e.config.Spec.Session.Expires) * time.Hour})
153153
e.rootRoute.Use(SessionMgr.Handler())
154154
}
155155

0 commit comments

Comments
 (0)