登录成功,但SessionAuthMiddleware中public.AdminSessionInfoKey取不到值

来源:5-10 登陆管理功能 - 登陆信息接口开发

jessezwd

2020-06-29

curl -X POST "http://127.0.0.1:8880/admin_login/login" -H  "accept: application/json" -H  "Co
ntent-Type: application/json" -d "{  \"password\": \"123456\",  \"username\": \"admin\"}"
{"errno":0,"errmsg":"","data":{"token":"admin"},"trace_id":"ac140a025ef9301ebd4e0da9104dc7b0","stack":null}

 curl -X GET "http://127.0.0.1:8880/admin/admin_info" -H  "accept: application/json"
{"errno":3,"errmsg":"user not login","data":"","trace_id":"ac140a025ef9309b3d070da966cb39b0","stack":"user not login"}

AdminLogin中已设置public.AdminSessionInfoKey:

......

sessInfo := &dto.AdminSessionInfo{
        ID:        admin.Id,
        UserName:  admin.UserName,
        LoginTime: time.Now(),
    }
    sessBts, err := json.Marshal(sessInfo)
    if err != nil {
        middleware.ResponseError(c, 2003, err)
        return
    }
    sess := sessions.Default(c)
    sess.Set(public.AdminSessionInfoKey, string(sessBts))
    sess.Save()

......

在SessionAuthMiddleware中,取不到public.AdminSessionInfoKey:

func SessionAuthMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        session := sessions.Default(c)
        if adminInfo, ok := session.Get(public.AdminSessionInfoKey).(string); !ok || adminInfo == "" {
            ResponseError(c, InternalErrorCode, errors.New("user not login"))
            c.Abort()
            return
        }
        c.Next()
    }
}

写回答

1回答

牛儿吃草

2020-07-01

直接打印一下内容试试。
fmt.Println(session.Get(public.AdminSessionInfoKey))

0
3
崛起的架构师
回复
慕粉1601214865
我也遇到了跟您一样的问题,请问您后来解决了吗?怎么解决的?谢谢
2024-01-16
共3条回复

Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1323 学习 · 352 问题

查看课程