添加模块校验

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 {
g.Meta `path:"/create" tags:"创建" method:"get" summary:"创建 Token"`
}
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/internal/model/do"
"PersonalMain/internal/service"
"PersonalMain/utility"
"PersonalMain/utility/ErrorCode"
"PersonalMain/utility/ResultUtil"
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// TokenCreate
//
// 生成 Token
func (_ *ControllerV1) TokenCreate(ctx context.Context, _ *request.TokenCreateReq) (res *request.TokenCreateRes, err error) {
// 获取 Cookie 是否存在
req := ghttp.RequestFromCtx(ctx)
@ -21,16 +25,42 @@ func (_ *ControllerV1) TokenCreate(ctx context.Context, _ *request.TokenCreateRe
token = tokenService.GetToken(req)
if tokenService.VerifyToken(token) {
// 有效则输出Token依然有效
utility.Success(req, "Token 依然有效", nil)
ResultUtil.Success(req, "Token 依然有效", nil)
} else {
// 生成新的 Session
token = tokenService.CreateToken()
utility.Success(req, "Token 已重新生成", g.Map{"token": token.Token})
ResultUtil.Success(req, "Token 已重新生成", g.Map{"token": token.Token})
}
} else {
// 生成新的 Session
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
}

View File

@ -13,7 +13,8 @@ type Errors interface {
}
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 {

View File

@ -1,4 +1,4 @@
package utility
package ResultUtil
import (
"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{}) {
req.Response.WriteJson(g.Map{
"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{}) {
req.Response.WriteJson(g.Map{
"output": output,