單使用者多角色許可權的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 通過執行下列操作檢查指定資料庫中所...