單使用者多角色許可權的MSSQL實現 轉)

2021-09-25 20:35:40 字數 1740 閱讀 6846

單使用者多角色許可權的mssql實現

資料表設計

分為使用者表、角色表、角色擁有許可權表、許可權表、使用者所屬角色表

表名:users(使用者表)

字段型別

長度說明

idint

自動編號,主鍵

username

varchar

20 password

varchar

20 表名:roles(角色表)

字段型別

長度說明

idint

自動編號,主鍵

name

varchar

50 表名:usersroles(使用者所屬角色表)

字段型別

長度說明

idint

自動編號,主鍵

userid

int對users.id做外來鍵

roleid

int對roles.id做外來鍵

表名:permissions(許可權表)

字段型別

長度說明

idint

自動編號,主鍵

name

varchar

50許可權的名稱

表名:rolespermissions(角色許可權表)

字段型別

長度說明

idint

自動編號,主鍵

roleid

int對roles.id做外來鍵

permissionid

int對permissions.id做外來鍵

allowed

small int

該許可權是否被允許

完成後的關係圖如下所示:

以下的儲存過程用於檢查使用者@username是否擁有名稱為@permission的許可權

create procedure checkpermission

(@username    varchar(20),

@permission    varchar(50))as

select min(allowed) from rolespermissions

inner join permissions on permissions.id = permissionid

inner join roles on roles.id = roleid

inner join usersroles on usersroles.id = roles.id

inner join users on users.id = usersroles.userid

where users.username=@username and permissions.name=@permission

單使用者多角色許可權的原理

假設使用者a現在同時有兩個角色programmer和contractor的許可權

permission名稱

角色programmer許可權

角色contractor許可權

組合後許可權

檢視檔案

允許(allowed=1)

允許(allowed=1)

允許 編輯檔案

允許(allowed=1)

不允許(allowed=0)

不允許

上傳允許(allowed=1)

沒有此許可權的記錄允許

單使用者多角色許可權的MSSQL實現

資料表設計 分為使用者表 角色表 角色擁有許可權表 許可權表 使用者所屬角色表 表名 users 使用者表 字段型別 長度說明 idint 自動編號,主鍵 username varchar 20password varchar 20表名 roles 角色表 字段型別 長度說明 idint 自動編號,...

CentOS的單使用者模式

linux系統下的單使用者模式類似於windows系統的安全模式,這種模式特殊情況下才建議使用,比如 超級管理員的登入密碼忘記,無法登陸主機等情況!不過在工作環境中最好還是盡量避免出現要進入這種模式的情況。在centos6中進入單使用者模式 出現開機介面時立即按下 e 鍵,可以進入以下介面 在上圖所...

MSSQL 資料庫修復,語句參考及單使用者模式的處理

mssql 資料庫修復,語句參考及單使用者模式的處理 修理還原乙個庫的時候,碰到庫不完整的情況,採用dbcc修復。dbcc checkalloc transact sql 檢查指定資料庫的磁碟空間分配結構的一致性。dbcc checkdb transact sql 通過執行下列操作檢查指定資料庫中所...