动态

详情 返回 返回

還在手寫權限管理?Think-authz 庫幫你省 80% 工作量,開箱即用 - 动态 详情

做後端開發的你,是不是也被 “權限管理” 搞得頭大?

寫接口時,要反覆判斷 “用户有沒有訪問權限”“角色能不能操作這個資源”;改需求時,加一個新權限就要改一堆代碼,還容易漏判、錯判;對接不同項目時,權限邏輯又要重新寫一遍,重複勞動沒完沒了……

這裏給大家推薦的 Think-authz,就是專門為解決權限管理痛點而生的 “神器”—— 基於 RBAC 模型,支持多種權限規則,還能無縫對接 ThinkPHP 項目,讓你不用再手寫繁瑣的權限邏輯,幾分鐘就能搭起可靠的權限體系。

一、為什麼需要 Think-authz?

在介紹 Think-authz 之前,先説説我們平時手寫權限管理的 “坑”:

  1. 邏輯分散:權限判斷代碼混在業務邏輯裏,比如接口開頭要寫 “if (用户角色!= 管理員) return 無權限”,每個接口都要重複寫,後期難維護;
  2. 規則僵化:如果需要 “基於資源的權限”(比如用户只能編輯自己的文章),或者 “基於屬性的權限”(比如 VIP 用户才能看高清內容),手寫邏輯會非常複雜;
  3. 擴展性差:新增角色、修改權限範圍時,要改大量代碼,容易引發 bug;
  4. 安全性低:手動判斷容易漏判場景(比如忘了判斷 “超級管理員例外”),導致權限漏洞。

而 Think-authz 正是為解決這些問題而來 —— 它把權限管理邏輯從業務代碼中抽離出來,用統一的規則配置權限,支持靈活的權限策略,一鍵將Casbin集成到ThinkPHP項目中,讓權限管理變得 “簡單、可靠、可擴展”。

二、Think-authz 是什麼?

1. 本質:基於 Casbin 的 ThinkPHP 權限擴展

Think-authz 是 Casbin(一款強大的開源權限管理框架)在 ThinkPHP 生態下的適配庫。Casbin 支持 RBAC、ACL、ABAC 等多種權限模型,而 Think-authz 則把 Casbin 的能力 “封裝成 ThinkPHP 開發者熟悉的方式”,開箱即用,不用再自己做複雜的適配。

簡單説:Think-authz = Casbin 的強大能力 + ThinkPHP 的便捷集成。

2. 3 個核心優勢,解決你的痛點

(1)支持多種權限模型,滿足 99% 場景

不管你的項目需要哪種權限邏輯,Think-authz 都能覆蓋:

  • RBAC 模型(最常用):基於 “用户 - 角色 - 權限” 的三層結構,比如 “張三→編輯→能發佈文章”“李四→管理員→能刪除文章”;
  • ACL 模型:直接 “用户 - 權限” 映射,比如 “只有用户 ID=100 的能訪問後台”;
  • ABAC 模型:基於屬性判斷,比如 “用户只能編輯自己創建的文章”(判斷文章的 user_id 是否等於當前用户 ID);
  • RESTful 權限:結合 HTTP 方法,比如 “GET /api/user 允許遊客訪問,POST /api/user 只允許管理員訪問”。

不用再為不同場景手寫不同邏輯,配置規則就能實現。

(2)無縫對接 ThinkPHP,零成本集成

如果你正在用 ThinkPHP 8.x,集成 Think-authz 只需要 3 步:安裝依賴、註冊服務和配置發佈及數據遷移、權限決策,全程不超過 5 分鐘,不用改現有業務代碼。

而且它貼合 ThinkPHP 的開發習慣,比如用 ThinkPHP 的緩存、數據庫連接,支持 ThinkPHP 的模型關聯,開發者上手毫無壓力。

(3)規則靈活配置,改需求不用改代碼

權限規則可以存在數據庫、配置文件甚至 Redis 裏,想修改權限時,只需要改規則(比如給 “編輯” 角色加 “審核文章” 權限),不用改業務代碼。

比如要禁止某個角色訪問某個接口,只需要在權限規則表中新增一條 “拒絕規則”,無需修改接口代碼,極大降低了維護成本。

三、5 分鐘上手 Think-authz

光説不練假把式,下面用一個 “後台管理系統” 的例子,教你快速集成 Think-authz,實現 “管理員能訪問所有接口,編輯只能訪問文章相關接口” 的權限控制。

1. 第一步:安裝依賴

在 ThinkPHP 項目根目錄執行 Composer 命令:

composer require casbin/think-authz

2. 第二步:註冊服務、發佈配置和遷移

在應用的全局公共文件service.php中加入:

return [
    // ...

    tauthz\TauthzService::class,
];

發佈配置文件和數據庫遷移文件:

# 發佈配置文件
php think tauthz:publish
# 數據庫遷移文件
php think migrate:run

3. 第三步:策略管理和權限決策

安裝成功後,可以這樣使用:


use tauthz\facade\Enforcer;

// adds permissions to a user
Enforcer::addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
Enforcer::addRoleForUser('eve', 'writer');
// adds permissions to a rule
Enforcer::addPolicy('writer', 'articles','edit');

你可以檢查一個用户是否擁有某個權限:

// to check if a user has permission
if (Enforcer::enforce("eve", "articles", "edit")) {
    // permit eve to edit articles
} else {
    // deny the request, show an error
}

整個過程不用手寫一行權限判斷邏輯,全靠 Think-authz 幫你搞定!

四、哪些項目適合用 Think-authz?

不管是小項目還是大系統,只要需要權限管理,Think-authz 都能派上用場:

  • 企業內部管理系統:OA、CRM、ERP等系統通常需要嚴格的權限控制,以確保數據安全性和操作合規性,控制不同角色(管理員、運營、編輯)的操作權限;
  • 內容管理系統:博客、新聞網站等需要對內容操作權限進行控制,確保內容安全性和質量;
  • 多租户電子商務平台:需要對不同角色用户(管理員、商家、買家)進行權限控制,以保護交易數據和用户隱私,隔離不同租户的資源訪問權限;
  • 用户分級系統:比如普通用户、VIP 用户、超級會員的權限差異;
  • API 接口服務:控制第三方應用或前端的接口訪問範圍,支持 Restful 風格的接口;

從個人博客到企業級系統,穩定性和可靠性都能有效保證。

五、寫在最後

Think-Authz 為ThinkPHP開發者提供了一個強大而靈活的權限管理解決方案。無論你是正在開發一個新的ThinkPHP項目,還是需要為現有項目添加權限控制功能,Think-Authz都值得你的嘗試。

通過簡單的安裝和配置,你就可以為你的應用注入強大的權限控制基因,確保系統的安全性和可靠性。

項目地址👉 :https://github.com/php-casbin/think-authz

嘗試使用 Think-Authz 吧,讓它成為你 ThinkPHP 項目權限管理的得力助手!

user avatar xinggandemuer_b5u1v2 头像 tim_xiao 头像 didiaodekaishuiping 头像 sy_records 头像 crmeb 头像 biliangxianting 头像 destiny_zxx 头像 justbecoder 头像 cloudace 头像 aijianshendexuegao_664c69bc099dc 头像 amc 头像
点赞 11 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.