<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          grbac單用戶多角色權(quán)限管理平臺

          聯(lián)合創(chuàng)作 · 2023-09-30 09:04

          Go語言版本的權(quán)限管理服務(wù)平臺,利用shiro權(quán)限管理設(shè)計思想,支持單用戶多角色,可以具體到對某一個資源進行權(quán)限控制,比RBAC的資源管理更細粒度化。

          權(quán)限管理服務(wù)平臺

          該服務(wù)采用比較流行的微服務(wù)思想, 利用shiro<域,動作,實體>思想,實現(xiàn)權(quán)限管理平臺服務(wù), 它支持單用戶多角色 , 比RBAC的資源管理更細粒度化

          權(quán)限管理服務(wù)平臺的實現(xiàn),主要由三個步驟構(gòu)成:

          • 第一步:判斷URL是否在白名單中,如果是,直接返回狀態(tài)碼:200
          • 第二步:解析URL,獲取功能ID和實體ID,服務(wù)初始化階段,會構(gòu)建多叉樹
          • 第三步:獲取<域,動作,實體>, 并在redis中采用SET集合存儲<UserId-FuncId, SET集合={實體1, 實體2, ... , 實體N}>

          權(quán)限管理庫表設(shè)計

          權(quán)限管理庫表

          環(huán)境依賴

          OpenResty配置

          權(quán)限管理安插在Nginx Access訪問階段,對http請求的合法性進行校驗

          access_by_lua_file "/data/openresty/lua_files/test_ycfm_lua_files/access_by_grbac.lua"

          -- GRBAC權(quán)限管理模塊
          ngx.req.read_body()
          local bodyData = ngx.req.get_body_data()
          ngx.log(ngx.ERR, "body data:", bodyData)
          local cjson = require "cjson"
          local info={
                  ["body"] =  bodyData,
                  ["method"] = ngx.req.get_method(),
                  ["uri"] = ngx.var.uri,
          }
          local encode = cjson.encode(info)
          local res = ngx.location.capture('/v1/grbac/functions/tree_parsing', {method=ngx.HTTP_POST, body=encode})
          if res.status == 403 then
                  ngx.exit(ngx.HTTP_FORBIDDEN)
          end
          --- 這里需要注意的地方:
          --- 當(dāng)http請求頭Content-type: multipart/form-data時,由于子請求繼承父請求的信息,導(dǎo)致body無法改變
          --- 需要在nginx中l(wèi)ocation ~ /v1/grbac體中增加下面一句:
          ——- `proxy_set_header   Content-Type   "application/x-www-form-urlencoded"`;
          --- 這樣做body=encode才能生效

          DEMO

          瀏覽 18
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲一区二区三区污污污 | 国产白浆一区二区三区 | 一区二区三区四区免费的视频 | 日本免费色视频 | 日本人妻XXXX |