添加模块校验
This commit is contained in:
parent
d4d4fd3f79
commit
e710eb9778
@ -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{}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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,
|
Loading…
x
Reference in New Issue
Block a user