添加模块校验

This commit is contained in:
筱锋xiao_lfeng 2023-12-25 02:28:28 +08:00
parent d4d4fd3f79
commit e710eb9778
No known key found for this signature in database
GPG Key ID: F693AA12AABBFA87
4 changed files with 59 additions and 7 deletions

View File

@ -5,5 +5,9 @@ import "github.com/gogf/gf/v2/frame/g"
type TokenCreateReq struct { type TokenCreateReq struct {
g.Meta `path:"/create" tags:"创建" method:"get" summary:"创建 Token"` g.Meta `path:"/create" tags:"创建" method:"get" summary:"创建 Token"`
} }
type TokenCreateRes struct{} type TokenCreateRes struct{}
type TokenVerifyReq struct {
g.Meta `path:"/verify" tags:"验证" method:"get" summary:"验证 Token"`
}
type TokenVerifyRes struct{}

View File

@ -4,12 +4,16 @@ import (
"PersonalMain/api/request" "PersonalMain/api/request"
"PersonalMain/internal/model/do" "PersonalMain/internal/model/do"
"PersonalMain/internal/service" "PersonalMain/internal/service"
"PersonalMain/utility" "PersonalMain/utility/ErrorCode"
"PersonalMain/utility/ResultUtil"
"context" "context"
"github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/net/ghttp"
) )
// TokenCreate
//
// 生成 Token
func (_ *ControllerV1) TokenCreate(ctx context.Context, _ *request.TokenCreateReq) (res *request.TokenCreateRes, err error) { func (_ *ControllerV1) TokenCreate(ctx context.Context, _ *request.TokenCreateReq) (res *request.TokenCreateRes, err error) {
// 获取 Cookie 是否存在 // 获取 Cookie 是否存在
req := ghttp.RequestFromCtx(ctx) req := ghttp.RequestFromCtx(ctx)
@ -21,16 +25,42 @@ func (_ *ControllerV1) TokenCreate(ctx context.Context, _ *request.TokenCreateRe
token = tokenService.GetToken(req) token = tokenService.GetToken(req)
if tokenService.VerifyToken(token) { if tokenService.VerifyToken(token) {
// 有效则输出Token依然有效 // 有效则输出Token依然有效
utility.Success(req, "Token 依然有效", nil) ResultUtil.Success(req, "Token 依然有效", nil)
} else { } else {
// 生成新的 Session // 生成新的 Session
token = tokenService.CreateToken() token = tokenService.CreateToken()
utility.Success(req, "Token 已重新生成", g.Map{"token": token.Token}) ResultUtil.Success(req, "Token 已重新生成", g.Map{"token": token.Token})
} }
} else { } else {
// 生成新的 Session // 生成新的 Session
token = tokenService.CreateToken() token = tokenService.CreateToken()
utility.Success(req, "Token 已生成", g.Map{"token": token.Token}) ResultUtil.Success(req, "Token 已生成", g.Map{"token": token.Token})
}
return res, err
}
// TokenVerify
//
// 验证 Token
func (_ *ControllerV1) TokenVerify(ctx context.Context, _ *request.TokenVerifyReq) (res *request.TokenVerifyRes, err error) {
// 获取 Cookie 是否存在
req := ghttp.RequestFromCtx(ctx)
hasCookie := req.Cookie.Contains("token")
tokenService := service.NewTokenService()
var token *do.TokenDO
if hasCookie {
// 检查 Session 是否有效
token = tokenService.GetToken(req)
if tokenService.VerifyToken(token) {
// 有效则输出Token依然有效
ResultUtil.SuccessNoData(req, "Token 有效")
} else {
// 生成新的 Session
token = tokenService.CreateToken()
ResultUtil.ErrorNoData(req, ErrorCode.TokenVerifyFailed)
}
} else {
ResultUtil.ErrorNoData(req, ErrorCode.TokenExpired)
} }
return res, err return res, err
} }

View File

@ -13,7 +13,8 @@ type Errors interface {
} }
var ( var (
NoneDataResult = ErrorCode{output: "success", code: 200, message: "success"} TokenExpired = ErrorCode{output: "error", code: 40100, message: "Token 已过期"}
TokenVerifyFailed = ErrorCode{output: "error", code: 40101, message: "Token 验证失败"}
) )
func (e ErrorCode) Output() string { func (e ErrorCode) Output() string {

View File

@ -1,4 +1,4 @@
package utility package ResultUtil
import ( import (
"PersonalMain/utility/ErrorCode" "PersonalMain/utility/ErrorCode"
@ -31,6 +31,9 @@ func SuccessNoData(req *ghttp.Request, message string) {
}) })
} }
// Error
//
// 错误输出(包含 data
func Error(req *ghttp.Request, errorCode ErrorCode.ErrorCode, data interface{}) { func Error(req *ghttp.Request, errorCode ErrorCode.ErrorCode, data interface{}) {
req.Response.WriteJson(g.Map{ req.Response.WriteJson(g.Map{
"output": errorCode.Output(), "output": errorCode.Output(),
@ -40,6 +43,20 @@ func Error(req *ghttp.Request, errorCode ErrorCode.ErrorCode, data interface{})
}) })
} }
// ErrorNoData
//
// 错误输出(不含 data
func ErrorNoData(req *ghttp.Request, errorCode ErrorCode.ErrorCode) {
req.Response.WriteJson(g.Map{
"output": errorCode.Output(),
"code": errorCode.Code(),
"message": errorCode.Message(),
})
}
// ErrorDefault
//
// 默认错误输出(包含 data
func ErrorDefault(req *ghttp.Request, output string, code int, message string, data interface{}) { func ErrorDefault(req *ghttp.Request, output string, code int, message string, data interface{}) {
req.Response.WriteJson(g.Map{ req.Response.WriteJson(g.Map{
"output": output, "output": output,