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