api访问权限控制

Posted yanbiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了api访问权限控制相关的知识,希望对你有一定的参考价值。

1.当用户登录时,在redis中存储对应的权限,在openresty配置要进行控制的权限,解析成一颗树

  

2.在用户访问api时,通过用户id在openresty中提取权限,和权限树进行比较。

 

local permission = MatchUrlTree(ngx.var.uri,ngx.req.get_method())
  if permission then
    local permission_json,err =redis_sess:get(permission_key)
    if permission_json == ngx.null or permission_json == "" then
      ngx.exit(ngx.HTTP_FORBIDDEN) 
    end
    local ok,permission_data = pcall(json.decode,permission_json)
    if not ok then 
      ngx.log(ngx.ERR, "json decode error")
      ngx.exit(ngx.OK)
    end
    if not permission_data[permission] then
      ngx.exit(ngx.HTTP_FORBIDDEN) 
    end
  end
end

  

以上是关于api访问权限控制的主要内容,如果未能解决你的问题,请参考以下文章

webservice 权限控制

教程4 - 验证和权限

微服务之七:轻松搞定SpringCloud微服务-API权限控制

基于微服务API级权限的技术架构

认证鉴权与API权限控制在微服务架构中的设计与实现

关于API网关权限