工作時間也不長,但是總想寫一些自己的收穫。公司利用的技術也比較單純,asp.net,js也不怎麼需要用,唯一寫的多的就是sql語句。
好了,廢話不多說了,開始談談我在做專案中一些對系統許可權的收穫,不過很多都是專案中看到的,我就想自己重新做一遍。也許會有
很多的問題和考慮不全的地方,但是我還是要寫出來,當做自己的一種學習罷了。
設計思路
(1)使用者表
許可權是根據登陸者不同而不同的,使用者表就比較簡單了,簡單的表設計如下
[user_no] [nvarchar](20) not null, //使用者id,主鍵
[user_name] [nvarchar](20
) null,
[user_password] [nvarchar](
20) null,
(2)許可權列表
設定所有的許可權,例如新增,修改,查詢
[action_id] [nvarchar](20) null,
[action_name] [nvarchar](
20) null
(3)功能表
系統的功能是存在資料庫中的,根據許可權來獲取部分功能,並展示。表設計如下:
[function_id] [nvarchar](20) not null,//功能id
[function_brother_id] [int] not null,//
相同功能的不同頁面
[function_name] [nvarchar](50
) null,
[function_url] [nvarchar](
500) null,
[function_level] [
int] null,
[function_sort] [
int] null,
[function_action] [nvarchar](
100) null,
[function_parent_id] [nvarchar](
20) null,
[function_inmenu] [bit] null,
//是否在選單中
為什麼有[function_brother_id],乙個選單裡面的乙個功能可能會有多個頁面。例如乙個使用者頁面,可能在功能裡面叫使用者資訊,但是會涉及多個頁面,每個頁面都需要許可權。
[function_inmenu]就是判斷同功能裡面選單裡鏈結是其中哪個頁面(只能有乙個)。
[function_action]是根據許可權列表給每個功能賦給許可權
(4)許可權組
我們的許可權是根據組來區分的。乙個使用者在乙個組裡面,那個組裡面有哪幾個功能,其中每個功能有哪幾種許可權。這就是我們的系統許可權的核心了,不過比較簡單。
[group_id] [nvarchar](20) not null,
[group_name] [nvarchar](
50) null,
這裡面儲存許可權組的基本資訊,一般會預設有系統管理者和一般使用者。
(5)使用者許可權組
設定使用者在哪個群組。我們目前的系統設計的是乙個使用者可以有多個組,但是我覺得乙個使用者設定乙個群組就ok了。如果乙個使用者沒有設定在哪個組,預設為一般使用者。
[group_id] [nvarchar](20) null,
[user_no] [nvarchar](
20) not null,
(6)群組功能
設定每個群組裡面有哪幾個功能,每個功能有哪幾種許可權。
注意,功能表裡面的許可權與此處不同,可能乙個功能有查詢和刪除許可權,但是本群組裡面的這個功能只有查詢許可權。
這個許可權必須是在功能裡面此功能所有的許可權中。
[group_id] [nvarchar](20) not null,
[function_id] [nvarchar](
20) not null,
[group_action] [nvarchar](
100) null,
表設計到此ok,算是比較簡單的。
使用過程
(1)登陸時
驗證通過時,
> 根據使用者id去使用者許可權表裡面取得此使用者所對應的群組
>根據群組對應的所有功能去功能表裡面找到相應的在選單中的功能,這裡可以拼成xml來組成功能列表,
這樣就可以實現有些功能在選單,有些沒許可權的則不在,也可以查到此功能有哪些許可權(比如只有查詢許可權,或是還有新增許可權)
進入頁面時的處理
群組功能裡面無此頁面功能時,就算是直接輸入連線也會被拒絕訪問
根據頁面找到功能id,再找到登入者所屬群組此頁面有哪些許可權,根據許可權來實現一下頁面元素的隱藏和顯示(如沒有新增許可權就把新增按鈕隱藏)
這樣就實現了登入者的許可權,進入頁面的許可權和頁面上一些操作的許可權了。
模組簡單設計 設計簡單的賬號系統
下面考慮 乙個簡化版使用者賬戶系統,從註冊,登入,使用,登出四個方面做個簡單的設計 account表包含下面三個字段 id 乙個表唯一的id,標識使用者 user 使用者名稱 passwd 使用者密碼 為了防止資料庫被侵入洩露密碼,需要如md5 passwd 或者crypt單向加密 1,使用者註冊 ...
許可權選單設計
顧名思義,權 代表 權力 劃分了系統的職權,不同的使用者擁有不同的權力劃分 限 代表 限制 在權力劃分的基礎上對職能範圍進行了限制,本文所述的許可權相對簡單,賦予不同角色看到不同選單的許可權。許可權控制能較好地解決系統安全問題,避免公司機密資料外洩,同時,不同部門使用系統時互不干擾,因此被企業廣泛應...
關於許可權管理系統的簡單設計和分析
許可權管理系統的分類 從類別上簡單分類,分成兩類 認證 用來識別使用者的身份 授權 根據登入使用者的身份給予使用者相應的許可權 認證和授權大家顧名思義,可以不用說,來說說那四種控制級別的使用場景和基本實現吧 url級別 首先說說它的實現原理,它基於filter來實現,我的思路是在請求的時候輸入url...