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

2021-08-22 01:34:25 字數 1632 閱讀 9907

資料表設計

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

表名:users(使用者表)

字段型別

長度說明

idint

自動編號,主鍵

username

varchar

20password

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 andpermissions.name=@permission

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

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

permission名稱

角色programmer許可權

角色contractor許可權

組合後許可權

檢視檔案

允許(allowed=1)

允許(allowed=1)

允許編輯檔案

允許(allowed=1)

不允許(allowed=0)

不允許上傳

允許(allowed=1)

沒有此許可權的記錄

允許

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

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

CentOS的單使用者模式

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

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

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