一些框架优化
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user