ASP.NET MVC4+EasyUI+EntityFrameWork5權限管理系統——數據庫的設計(一)

  快一年沒寫博客了,這段時間感受好迷茫,寫點博客,記錄一下本身的成長過程,但願對你們也有幫助數據庫

  先上圖學習

  一個用戶能夠有多個角色,一個用戶能夠屬於多個部門,這些均可以控制到權限,有時特殊要求,一樣的部門和角色不必定有一樣的權限(雖然能夠定義多個角色來實現,可是若是這種狀況多了就有點麻煩了),因此還弄了個基於用戶的權限,這樣就能夠很靈活的控制了。spa

  每一個模塊的包含那些可控制的權限,用一個int類型字段控制,下邊用一個枚舉位標示出了系統全部的可能的權限(根據實際狀況)設計

  

using System;

namespace Mydream.Permission.Common
{
    [Flags]
    public enum Authority : int
    {
        /// <summary>
        /// 瀏覽權限
        /// </summary>
        Index = 1,
        /// <summary>
        /// 添加權限
        /// </summary>
        Add = 2,
        /// <summary>
        /// 編輯權限
        /// </summary>
        Edit = 4,
        /// <summary>
        /// 刪除權限
        /// </summary>
        Delete = 8,
        /// <summary>
        /// 搜索權限
        /// </summary>
        Search = 16,
        /// <summary>
        /// 審覈權限
        /// </summary>
        Verify = 32,
        /// <summary>
        /// 移動權限
        /// </summary>
        Move = 64,
        /// <summary>
        /// 打印權限
        /// </summary>
        Print = 128,
        /// <summary>
        /// 下載權限
        /// </summary>
        Download = 256,
        /// <summary>
        /// 備份權限
        /// </summary>
        Backup = 512,
        /// <summary>
        /// 受權權限
        /// </summary>
        Grant = 1024,
        /// <summary>
        /// 查看詳細權限
        /// </summary>
        View = 2048,
        /// <summary>
        /// 導出權限
        /// </summary>
        Export = 4096
    }
}

這些枚舉值所有用的2的次冪,之全部這樣賦值,是爲了用2進制來控制權限blog

好比某個模塊(模塊A)有瀏覽、添加、編輯、刪除、打印的權限,那麼這個模塊的int值=Index|Add|Edit|Delete|Print博客

 00000001(Index=2^0=1)it

 00000010 (Add=2^1=2)io

 00000011 3class

 00000100(Edit=2^2=4)搜索

 00000111 7

 00001000(Delete=2^3=8)

 00001111 15

 1000000 (Print=2^7=128)

 10001111 143

    最後的值其實就是1+2+4+8+128=143 因此這個模塊對應的權重就是143(這個只是說明這個模塊包含哪些功能)

  若是一用戶屬於角色A,角色A包含模塊A中的瀏覽和添加權限(1+4=5),那麼這個角色A 就對應了  (角色A的ID 模塊A的ID 權重=5)

  咱們的Action的命名按照枚舉那樣命名,而後每次操做的時候用這個權限INT值,而後if(INT值&Action命名的枚舉==Action命名的枚舉)若是爲True說明有執行這個Action的權限

  因爲權限管理系統還在業餘學習研究中,不少尚未實現,上面主要講解了數據庫的設計,後邊的實現會慢慢呈現,最近都很忙,也沒怎麼寫這個業餘學習的例子了,後續有更新會慢慢放上來,寫得很差請包涵,若有好的意見請賜教,謝謝!

相關文章
相關標籤/搜索