許可權管理,必涉及到使用者與角色關係。
下面的做法,是對某乙個使用者授權擁有某個角色。乙個使用者可擁有多個角色。
建立一張表[usersrole]其中有三個字段,[usersid]註冊使用者id,[roleid]角色表的主id,還有乙個字段[isenable]資料型別為bit是記錄使用者是否擁有此角色。
表的結構如下:
setansi_nulls
ongo
setquoted_identifier
ongo
create
table
[dbo].
[usersrole](
[usersid][
int]
notnull,[
roleid][
smallint
]not
null,[
isenable][
bit]
null
) on
[primary]go
alter
table
[dbo].
[usersrole
]with
check
addconstraint
[fk_usersrole_role
]foreign
key(
[roleid])
references
[dbo].
[role](
[roleid])
onupdate
cascade
ondelete
cascade
goalter
table
[dbo].
[usersrole
]check
constraint
[fk_usersrole_role]go
alter
table
[dbo].
[usersrole
]with
check
addconstraint
[fk_usersrole_users
]foreign
key(
[usersid])
references
[dbo].
[users](
[usersid])
onupdate
cascade
ondelete
cascade
goalter
table
[dbo].
[usersrole
]check
constraint
[fk_usersrole_users]go
接下來,寫分配角色儲存過程:
setansi_nulls
ongo
setquoted_identifier
ongo
create
procedure
[dbo].
[usp_usersrole_assignrole](
@usersid
int,
@roleid
smallint
,
@isenable
bit)
asbegin
transaction
declare
@err
int--
判斷[usersrole]表中,此使用者與此角色是否存在記錄 if(
select
count(*
) from
[usersrole
]where
[usersid]=
@usersid
and[
roleid]=
@roleid
) >
0begin
--如果存在,作更新動作
update
[usersrole
]set
[isenable]=
@isenable
where
[usersid]=
@usersid
and[
roleid]=
@roleid
set@err
=@@error
if@err
<>
0rollback
transaction
endelse
begin
--如果不存在,做插入記錄動作
insert
into
[usersrole](
[usersid],
[roleid],
[isenable])
values
(@usersid
,@roleid
,@isenable
)set
@err
=@@error
if@err
<>
0rollback
transaction
endcommit
transactiongo
在asp.net的介面,太概如下:
程式開發中許可權管理簡述,使用者 角色 許可權關係
大家在開發的過程中肯定都要對不同的使用者授予不同的許可權,比如不同使用者給予選單欄顯示的內容不同,這通常是通過使用者 角色 許可權三者之間的管理來管理的 這裡針對winform c s 開發來將 一。首先要建立三者的資料庫關閉,簡單來說需要建立五張表 1.使用者表 2.角色表 3.許可權表 4.使用...
使用者 角色與許可權
經常整理 反思,才能進步。一位偉大的哲學家 還原真相 事情是這樣的,我在實習的時候,我的實習導師安排我做系統後台管理中的 使用者資訊管理 角色管理 許可權管理 三個進行分析,並讓我說了說我的想法。初生牛犢不怕虎,稍微思索了下,就開始講。在講到角色管理和許可權管理的時候,我就說可以將角色管理和許可權管...
oracle使用者管理(使用者 許可權 角色)
1.建立使用者 確定使用者需要將物件儲存在哪個表空間 決定每個表空間中該使用者的使用空間 指派預設表空間和臨時表空間 開始建立乙個使用者,賦予許可權和角色給使用者2.建立使用者的命令 create user 使用者名稱 identified by 使用者密碼 default tablespace 預...