|
@@ -33,7 +33,58 @@ urlArgs 添加字段 `__startDealTime` 当前处理时间
|
|
|
|
|
|
然后获取userID、version、platform
|
|
|
|
|
|
+如果用户userID 属于内部人员,且环境也能对应,通过该层校验
|
|
|
|
|
|
+对userID进行字符校验(字符串长度、和字母限制),不符合规则的,验证失败5003
|
|
|
+这一层校验,userID = "" 是允许通过的
|
|
|
|
|
|
+匹配path,`/internal/`和`/appc/`通过校验
|
|
|
|
|
|
+剩下的,就行token验证。
|
|
|
+
|
|
|
+### tokenCheckConfig.validateNewToken
|
|
|
+
|
|
|
+这里是根据url、version、userid、new-token 进行过滤,返回 {status}
|
|
|
+
|
|
|
+具体细则为
|
|
|
+
|
|
|
+userid不存在、appversion<4.9.5、path=/user/sendValidateTokenForRegist且不存在new-token、path in tokenCheckConfig.ignoreNewTokenUrls 时
|
|
|
+返回 {status = "1"} ,nil 验证通过
|
|
|
+
|
|
|
+new-token 不存在时,如果path = ""/appInfo/getStartImg" , status=1, 否则 status="3"
|
|
|
+返回 {status = "3"} ,nil 验证通过
|
|
|
+
|
|
|
+用new-token 查 middleware_util.middlewareTokenCheck
|
|
|
+如果返回nil,可能有两种情况:1、请求status != 200 ,比如说超时,或者程序错误,这种情况肯定是要允许通过拦截的;2、代码错误,走到的第二个nil,会有日志抛出,并且也要通过校验。
|
|
|
+正常情况下,不会返回nil,会返回一个json,里面包含status,user_id,
|
|
|
+status如果 == "1",那么即将返回{status = "1"} ,nil
|
|
|
+status如果 ~= "1",那么即将返回{status = "3"} ,nil
|
|
|
+如果userID ~= responseUserId 那么返回{status = "3"} ,nil
|
|
|
+
|
|
|
+### status
|
|
|
+
|
|
|
+如果data.status == "3",验证失败5100
|
|
|
+
|
|
|
+### 进入第一层加密
|
|
|
+
|
|
|
+如果path 不在 tokenCheckConfig.ignoreTokenUrls 中,进入第一层加密
|
|
|
+
|
|
|
+通过tokenCheckConfig.buildParamStr方法,把body和args中所有的key\value,按照一定的顺序排序,然后转string,然后拼接,最后拼一个url("/v4/"——>"")
|
|
|
+这样拼的字符串叫paraStr
|
|
|
+
|
|
|
+然后获取reqHeaders中的token字段
|
|
|
+
|
|
|
+**tokenCheckConfig.valideAESToken**
|
|
|
+
|
|
|
+该方法,根据`paraStr`、`version`、`platform`、`data`生成`desStr`
|
|
|
+具体生成规则,请详细看配置文件
|
|
|
+返回`desStr` == `token`
|
|
|
+
|
|
|
+如果返回`false`,5100
|
|
|
+
|
|
|
+### 第二层加密
|
|
|
+
|
|
|
+针对于`tokenCheckConfig.coreFuncs[path]` 会执行第二层加密
|
|
|
+
|
|
|
+## checkAuthorization
|
|
|
|