cngx用户认证模块.md 1.3 KB

cngx用户认证代码理解

着重看common_util.readRequestArgs方法

然后先ngx.req.read_body()用于后面的读body

ngx.req.get_uri_args()用于读get参数,以key\value的形式,即table类型

urlArgs 添加字段 __startDealTime 当前处理时间

local reqHeaders = ngx.req.get_headers(0) or {} 把headers中的key\value放到reqHeaders 中

common_util.get_data() 中内嵌 ngx.req.get_body_data() 方法,获取的是bodyStr

ngx.var.uri获取path

if not flag 这个逻辑没看懂,之后再细看下

reqBody = cjson_safe.decode(reqBodyStr) 继续body字符串,这种解析安卓端会nil,如果nil,用reqBody = ngx.decode_args(reqBodyStr) or {}进行解析 如果解析失败,打印错误日志,拒绝请求

再拿一下urlPath,和/appc/xxxx进行匹配,这个是socket请求,如果匹配到,就拿appc_util.transferCore方法从api_contentreqBodyurlArgs中筛选各个参数,放到reqBody中

然后进入middlewareCheck.check方法

validateToken

path = string.gsub( path, "/v4/", "/")把/v4/换成/

如果path来自于/ccb/ccbCallback 且args或者body中有callback参数,置为nil,并且通过该层校验

如果headers中参数from字段 == "cc",通过该层校验

然后获取userID、version、platform