Przeglądaj źródła

判断用户登录

yxh 4 lat temu
rodzic
commit
b9e2c95408
4 zmienionych plików z 26 dodań i 12 usunięć
  1. 1 1
      go.mod
  2. 2 2
      go.sum
  3. 22 8
      internal/app/system/controller/base.go
  4. 1 1
      library/libResponse/response.go

+ 1 - 1
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
 )

+ 2 - 2
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=

+ 22 - 8
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)
+	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)
+	b, failed = service.GfToken(ctx).IsLogin(r)
 	if !b {
-		libResponse.JsonExit(r, failed.Code, failed.Message)
+		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
 }

+ 1 - 1
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()
 }
 
 // 标准返回结果数据结构封装。