求教“許可權管理”的思路,最好是通過“角色”+“許可權”來實現的

來源:互聯網
上載者:User
許可權 角色

如題。。。

在複雜的使用權限設定面前,直接手寫if、else我覺得應該是不行了吧

求教思路


回複討論(解決方案)

在建表的時候就該有許可權表,角色的一個屬性外部索引鍵關聯這個表

在建表的時候就該有許可權表,角色的一個屬性外部索引鍵關聯這個表

可否說的再詳細一些呢?主要是 寫程式時 應該在哪一個環節來引入這個許可權判斷 如何引入

以前寫過個小項目也是許可權問題,我們是這樣解決的:當使用者登入時就把使用者的資訊(包括許可權,我那時許可權用的是數字。假如該使用者權限為5)存在session中,當該他要做某個操作時比如刪除(許可權要求要>6),比較當前許可權和要求許可權的大小....太遙遠了 記不太清楚了

一般身份識別(登入)後就引入角色到session,然後根據角色查表得到許可權

表設計:角色關聯菜單(一級菜單~二級菜單……),角色關聯操作(查看,刪除,搜尋,修改)

先確定許可權字的表示和儲存
php 的整型數為 logn 類型,具有64個二進位位。
因此,足以滿足大多數應用的需求。(每個二進位位表示一個動作)

每個角色具有一個許可權字,每個使用者可以具有多個角色
每個使用者還可以擁有一個例外許可權字

綜合許可權採用位元運算求出:
使用者權限 = 角色許可權 xor 例外
其中:角色許可權 = 使用者隸屬角色許可權 or 使用者隸屬角色許可權 ...

角色<->許可權;許可權<->菜單

先確定許可權字的表示和儲存
php 的整型數為 logn 類型,具有64個二進位位。
因此,足以滿足大多數應用的需求。(每個二進位位表示一個動作)

每個角色具有一個許可權字,每個使用者可以具有多個角色
每個使用者還可以擁有一個例外許可權字

綜合許可權採用位元運算求出:
使用者權限 = 角色許可權 xor 例外
其中:角色許可權 = 使用者隸屬角色許可權 or 使用者隸屬角色許可權 ...

感謝。 關於許可權的儲存和分配說的非常清楚

那具體在調用時怎麼使用呢?

比如現在有一個 刪除 按鈕

具有刪除許可權的角色們查看這個頁面時可以看到這個按鈕, 該怎麼寫? 用if、else嗎?

點擊刪除按鈕後提交到PHP 還需要再次判斷許可權嗎?

條件判斷總是必要的,不然如何知道誰是誰?
不過也很簡單
$u = 0b1011; //使用者權限
$p = 0b0010; //動作號(前面我已經講了可以有64種動作)
if($p & $u) echo '有許可權';

找一下RBAC設計模式

使用者表關聯使用者組表,使用者組表關聯許可權表,當使用者進入的時候,先判斷屬於哪個組,然後根據組設定許可權,很多開源產品都這麼設計的。

簡單的的 角色儲存好每個方法, 使用這個方法時 判斷這個使用者角色是否有這個方法許可權

RBAC許可權模式就可以 這些網上一大堆,自己可以查查

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.