天天看點

走火入魔.NET權限元件-用資源權限(設定權限)思想來解來解決權限的存儲問題

一個軟體并不是B/S的就牛了,或者是C/S的就怎麼了,軟體的主要目的是為了達到使用者的什麼目的?QQ為啥不做個B/S的?VS系列為啥不做個B/S的?SAP為啥不做個B/S的?作業系統為啥不作個B/S的?隻要能滿足客戶的需求不管事B/S的C/S的都是可以的,客戶是否用起來友善,維護是否友善,定位是否準确比B/S的還是C/S的更重要,一個思想并不在于它是B/S的還是C/S的,而在于是把問題如何巧妙的解決的。

   其實權限的存儲,看透了,也是很簡單的事情,就是 “什麼對象對什麼資源有什麼權限?”把這個邏輯關系能儲存好就ok了,你這樣設計了,别人也容易閱讀你的程式,容易了解你的資料庫設計,将來也容易維護一些。

   用一個思想,前後不沖突的,把整個系統實作出來,也有些不容易,很多環節會出現前後沖突,思路混亂的情況,是以時刻要提醒自己,自己的權限系統是按“什麼對象對什麼資源有什麼權限?”的指導思想設計的,若有違背了這個思想,那就仔細深入思考,再重新整理思路。

什麼對象:在系統裡确定各種對象的唯一性,需要2個參數,一個是對象的類别,一個是對象的主鍵,就像是ERP裡的入庫單(單号)。

什麼資源:什麼資源,也是一樣的,也需要一個分類,一個主鍵來識别資源的唯一性。

什麼權限:最簡單的做法,就是有一個權限表,隻用主鍵來識别唯一性,而不是用“哪個子產品+哪個功能”來識别權限,那樣做過于繁瑣了,将來的擴充性、可維護性都會很差一些,不能靈活适應各種複雜的情況。

參考權限的存儲結構如下:

下面是相對萬能的權限設定界面參考:

使用者資源權限設定如下界面

角色資源權限設定如下界面

當然以上參考界面是,從資源的角度出發,對某個資源,哪些使用者哪些角色有什麼權限?的角度進行設定的權限頁面。

存儲在資料庫中的效果如下:

以上界面的思想,也是展現了:“什麼對象對什麼資源有什麼權限?”的核心指導思想。

每個軟體公司,軟體産品,都需要有執著追求的人,追求每一個細節功能的實作,追求每一個使用者的回報意見完美解決,追求不斷完善,追求銅牆鐵壁的精神,才能作好軟體,再簡單的軟體,真正做透做深都非常不容易,就這麼個簡單的權限管理系統,我也搞來搞去完善了很多年,更何況一個複雜的應用系統,需要N多人N多年的精心錘煉才能打造出大家喜歡用的精品軟體系統來。

說得通俗一點兒,我就是輸入個内容然後有個查找清單功能就可以了,就這麼簡單的功能,能誕生出“google,baidu”這樣大公司,讓我們做個這麼簡單的功能,有幾個人能真正做出來?換成其他的軟體系統,也是一樣的道理,做個真正功能強大的,好用的軟體,都不容易的,沒有表面上看上去一樣那麼簡單,特别是模拟過别人系統的人會有這樣的感受,不就那麼幾個功能嗎?幾天就可以搞定,但是往往模拟了、自己做了後發現,别說幾天,幾周都做不完。

很多事情,并沒有你看上去的那麼簡單,你想象的那麼簡單,隻有自己去做了後才發現,裡面的水很深。

本文轉自jirigala_bao 51CTO部落格,原文連結:http://blog.51cto.com/jirigala/806828