From b9e2c95408481c94a4d63c3f7ae410b6a92d1d57 Mon Sep 17 00:00:00 2001 From: yxh Date: Wed, 16 Mar 2022 18:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A4=E6=96=AD=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 +- go.sum | 4 ++-- internal/app/system/controller/base.go | 32 ++++++++++++++++++-------- library/libResponse/response.go | 2 +- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 23c0671..6f084b8 100644 --- a/go.mod +++ b/go.mod @@ -8,5 +8,5 @@ require ( github.com/mojocn/base64Captcha v1.3.5 github.com/mssola/user_agent v0.5.3 github.com/tiger1103/gfast-cache v0.0.6 - github.com/tiger1103/gfast-token v0.0.7 + github.com/tiger1103/gfast-token v0.0.8 ) diff --git a/go.sum b/go.sum index 7860ee0..a266b5b 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tiger1103/gfast-cache v0.0.6 h1:H40Txv6co5bjaRlFQ/ixcMfpgsihhPpNftvCHm7hLpI= github.com/tiger1103/gfast-cache v0.0.6/go.mod h1:s6cRWyr87wz6IJNGKRV6Ahq9hcuVz8h2PAtGrO66JO8= -github.com/tiger1103/gfast-token v0.0.7 h1:LJxa4wvtorig/aiXcrqbO9BpJwuGVNAgp1fQVcR0Des= -github.com/tiger1103/gfast-token v0.0.7/go.mod h1:RnVRqmWD3h4qfTU1vJNXNhQjh2L5ht1vxLnjwShwGuY= +github.com/tiger1103/gfast-token v0.0.8 h1:1iEwwL3zOri0ETR8Ee4ubW/Sq29Cln/ydxHwVhUGfRk= +github.com/tiger1103/gfast-token v0.0.8/go.mod h1:RnVRqmWD3h4qfTU1vJNXNhQjh2L5ht1vxLnjwShwGuY= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.opentelemetry.io/otel v1.0.0 h1:qTTn6x71GVBvoafHK/yaRUmFzI4LcONZD0/kXxl5PHI= diff --git a/internal/app/system/controller/base.go b/internal/app/system/controller/base.go index 9d4ecc0..507c1fb 100644 --- a/internal/app/system/controller/base.go +++ b/internal/app/system/controller/base.go @@ -8,6 +8,7 @@ package controller import ( + "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/util/gconv" "github.com/tiger1103/gfast-token/gftoken" @@ -24,21 +25,34 @@ type baseController struct { // Init 自动执行的初始化方法 func (c *baseController) Init(r *ghttp.Request) { c.BaseController.Init(r) - ctx := r.GetCtx() - // 验证用户是否登录 - b, failed := service.GfToken(ctx).IsLogin(r) + b, failed := c.setLoginUser(r) if !b { libResponse.JsonExit(r, failed.Code, failed.Message) } +} + +//判断登录并设置用户信息 +func (c *baseController) setLoginUser(r *ghttp.Request) (b bool, failed *gftoken.AuthFailed) { + ctx := r.GetCtx() + b = true + // 验证用户是否登录 + b, failed = service.GfToken(ctx).IsLogin(r) + if !b { + return + } // 初始化登录用户信息 data, err := service.GfToken(ctx).ParseToken(r) if err != nil { - libResponse.JsonExit(r, gftoken.FailedAuthCode, err.Error()) + return } - context := new(model.Context) - err = gconv.Struct(data.Data, &context.User) - if err != nil { - libResponse.JsonExit(r, gftoken.FailedAuthCode, err.Error()) + if data != nil { + context := new(model.Context) + err = gconv.Struct(data.Data, &context.User) + if err != nil { + g.Log().Error(ctx, err) + return + } + service.Context().Init(r, context) } - service.Context().Init(r, context) + return } diff --git a/library/libResponse/response.go b/library/libResponse/response.go index b6d21c3..a98f732 100644 --- a/library/libResponse/response.go +++ b/library/libResponse/response.go @@ -47,7 +47,7 @@ func WriteTpl(r *ghttp.Request, tpl string, view *gview.View, params ...gview.Pa // 返回JSON数据并退出当前HTTP执行函数。 func (res *Response) JsonExit(r *ghttp.Request, code int, msg string, data ...interface{}) { res.RJson(r, code, msg, data...) - r.Exit() + r.ExitAll() } // 标准返回结果数据结构封装。