基於角色的許可權設計 一

2021-08-09 16:48:40 字數 1296 閱讀 7194

在任何系統中,許可權設計是最基礎的東西,本文給出乙個基於角色的許可權設計的循序漸進的設計方案。

在許可權系統中,功能(許可權)是最小的單位,比如起草新聞、編輯新聞、審核新聞、刪除新聞等,而角色是一類功能的集合,比如新聞編輯這個角色,他可能有起草新聞、編輯新聞等功能集合,而責任編輯他可能就有更多的許可權,比如除了新聞編輯的功能,還有審核新聞、刪除新聞等功能,給張三賦予新聞編輯的角色(其實我更願意說把張三加入到新聞編輯這個角色中去),張三就可以起草新聞、編輯新聞了,給李四賦予責任編輯的角色,李四就可以起草新聞、編輯新聞、審核新聞、刪除新聞了。

我們來看看版本一的解決方案: 

我們來模擬一下上面的資料:

使用者資訊表:

我們來看看如何判斷乙個使用者具有某個功能許可權:

首先在使用者張三登入的時候,獲取張三的全部功能列表:

select functionid from 

角色功能表

where roleid in (select roleid from

使用者角色表

where userid=』u1』)

這樣就可以得到張三的全部功能列表

functions

,在起草新聞的頁面我們就可以做如下判斷:

functions.contain(『f1』);

//當然你可以把這個

』f1』

定義成乙個常量:

newsfunction.draft

如果為true

就說明張三有起草新聞的許可權。

當然對於

web應用,您可以把

functions

用session

儲存起來,以避免每開啟乙個頁面都去資料庫中獲取。

似乎看起來是乙個不錯的解決方案。

還是新聞系統,最初新聞系統沒有分類,但是隨著新聞的增加,沒有分類的新聞看起來總是亂的,於是張三和李四給新聞新增了分類

a、分類

b,還是由張三負責起草,李四負責審核,以後又新增了更多的分類,並且也增加了人手,這個時候就有新的要求出來了:希望張三隻負責分類

a的起草,分類

b的起草交給其他人做,李四呢也只負責分類

a的審核(就相當於是乙個欄目的責任編輯)。

基於角色的許可權設計(一)

基於角色的許可權設計 一 在任何系統中,許可權設計是最基礎的東西,本文給出乙個基於角色的許可權設計的循序漸進的設計方案。在許可權系統中,功能 許可權 是最小的單位,比如起草新聞 編輯新聞 審核新聞 刪除新聞等,而角色是一類功能的集合,比如新聞編輯這個角色,他可能有起草新聞 編輯新聞等功能集合,而責任...

基於角色的許可權設計(一)

在任何系統中,許可權設計是最基礎的東西,本文給出乙個基於角色的許可權設計的循序漸進的設計方案。在許可權系統中,功能 許可權 是最小的單位,比如起草新聞 編輯新聞 審核新聞 刪除新聞等,而角色是一類功能的集合,比如新聞編輯這個角色,他可能有起草新聞 編輯新聞等功能集合,而責任編輯他可能就有更多的許可權...

基於角色的許可權設計(一)

在任何系統中,許可權設計是最基礎的東西,本文給出乙個基於角色的許可權設計的循序漸進的設計方案。在許可權系統中,功能 許可權 是最小的單位,比如起草新聞 編輯新聞 審核新聞 刪除新聞等,而角色是一類功能的集合,比如新聞編輯這個角色,他可能有起草新聞 編輯新聞等功能集合,而責任編輯他可能就有更多的許可權...