一些框架优化

This commit is contained in:
tangping
2025-01-07 16:43:33 +08:00
parent d562558a3e
commit b107b88800
9 changed files with 120 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
package remark
import (
"common/webServer"
"goutil/logUtilPlus"
)
@@ -41,7 +42,7 @@ func RegisterModuleRemark(name, desc, author, mendor, date string) {
// @outParam: 输出参数
//
// return:
func RegisterMethodRemark(moduleName, name, desc, author, mendor, date string, inParam []string, outParam string) {
func RegisterMethodRemark(moduleName, name, desc, author, mendor, date string, inParam []string, outParam string, skipVerifyTokenPage bool) {
var moduleRemark *ModuleRemark
var exists bool
for _, item := range remarksSlice {
@@ -57,4 +58,9 @@ func RegisterMethodRemark(moduleName, name, desc, author, mendor, date string, i
}
moduleRemark.MethodRemarkSlice = append(moduleRemark.MethodRemarkSlice, newMethodRemark(moduleName, name, desc, author, mendor, date, inParam, outParam))
//跳过登录验证
if skipVerifyTokenPage {
webServer.AddSkipVerifyTokenPage(moduleName, name)
}
}

View File

@@ -387,6 +387,11 @@ func CallFunction(requestObj *RequestObject) (responseObj *ResponseObject) {
in[i] = reflect.ValueOf(param_uint8)
}
}
case reflect.Pointer:
//if paramStruct, ok := paramItem.(struct{}); ok {
// in[i] = reflect.ValueOf(paramStruct)
//}
in[i] = reflect.ValueOf(paramItem)
}
}

View File

@@ -91,24 +91,28 @@ func (mux *selfDefineMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
params, err = context.RequestDataBySlice2ByJson()
if err != nil {
responseResult(w, responseObj.SetResultStatus(resultStatus.APIDataError))
return
}
//验证是否登录
if strs[0] != "AdminApi" || strs[1] != "Login" {
if !IsSkipVerifyTokenPage(strs[0], strs[1]) {
tokenStr := context.header.Get("token")
// token 转型成 int64
token := stringUtil.StringToInt64(tokenStr)
//是否存在
if !CheckToken(token) {
exist, tokenData := CheckToken(token)
if !exist {
responseResult(w, responseObj.SetResultStatus(resultStatus.NotLogin))
return
}
}
params, err = context.RequestDataBySlice2ByJson()
if err != nil {
responseResult(w, responseObj.SetResultStatus(resultStatus.APIDataError))
return
//添加登录用户到参数里的第一个
params = append([]interface{}{tokenData.UserInfo}, params...)
}
resquestData := NewRequestObject(strs[0], strs[1], params)

View File

@@ -11,6 +11,9 @@ var (
//锁
lock sync.RWMutex
//跳过验证token的页面
skipVerifyTokenPage = make(map[string]bool)
)
type TokenInfo struct {
@@ -20,6 +23,9 @@ type TokenInfo struct {
//管理员账号
Account string
//登录用户缓存
UserInfo any
//过期时间
ExpireTime time.Time
}
@@ -57,7 +63,7 @@ func AddLoginUserToken(token int64, tokenInfo *TokenInfo) {
// 返回值:
//
// bool: 表示令牌是否有效的布尔值true表示有效false表示无效
func CheckToken(token int64) bool {
func CheckToken(token int64) (bool, *TokenInfo) {
//添加锁防止并发
lock.Lock()
@@ -70,7 +76,7 @@ func CheckToken(token int64) bool {
tokenInfo, ok := loginUserMap[token]
if !ok {
// 如果没有找到对应的用户信息,则令牌无效
return false
return false, nil
}
// 获取令牌过期时间
@@ -82,11 +88,23 @@ func CheckToken(token int64) bool {
//移除令牌
delete(loginUserMap, token)
return false
return false, nil
}
//如果生效的话,则更新过期时间
tokenInfo.ExpireTime = now.Add(time.Hour * 24)
return true
return true, tokenInfo
}
func AddSkipVerifyTokenPage(moduleName, methodName string) {
skipVerifyTokenPage[moduleName+"_"+methodName] = true
}
func IsSkipVerifyTokenPage(moduleName, methodName string) bool {
exist, ok := skipVerifyTokenPage[moduleName+"_"+methodName]
if !exist {
return false
}
return ok
}