文章更新:php
AppBox 是基於 FineUI 的通用權限管理框架,包括用戶管理、職稱管理、部門管理、角色管理、角色權限管理等模塊。html
AppBox v2.0 發佈於2012年12月份,前端展示使用的是 FineUI v3.2.3,而ORM工具是 SubSonic v2.2.1。AppBox v2.0的創新之處在於將模塊和模塊權限的定義放在C#代碼中,從而方便了在Web Form後端代碼中使用強類型的權限定義,而不是傳統意義上的字符串,以下所示。前端
模塊的定義:sql
public enum ModuleType { None, CoreMenu, CoreJobTitle, CoreJobTitleUser, CoreDept, CoreDeptUser, CoreRole, CoreUser, CoreRoleUser, CoreRoleModule, CoreLog, CoreConf, CorePassword, CoreOnlineUser, AppFile, AppTest }
權限的定義:數據庫
public enum ModulePowerType { None, // 瀏覽權限是公共的,每一個模塊都有 CanRead, CoreDept_New, CoreDept_Edit, CoreDept_Delete, CoreDeptUser_New, CoreDeptUser_Delete, }
而後在Web頁面後臺定義每一個頁面所屬的模塊:後端
public override ModuleType Module { get { return ModuleType.CoreUser; } }
判斷某個操做是否擁有權限時:框架
// 在操做以前進行權限檢查 if (!CheckPowerDelete()) { CheckPowerFailWithAlert(); return; }
一:雖然說將權限定義在C#代碼中是AppBox v2.0的一處創新,但卻遭到不少網友的反對,認爲和傳統意義上保存在數據庫的作法不一樣,不靈活,也增長了理解的難度。AppBox v3.0會完全顛覆以前版本對權限的控制,採用一種更加現代化的創新(我將之稱爲「扁平化的權限設計」,由本人一手杜撰,若有雷同,純屬巧合),到時權限的定義已是保存在數據庫的了。數據庫設計
二:AppBox大版本升級的另外一個重要緣由是 Subsonic 已經跟不上時代潮流了,長期沒有更新和維護了,這也不能不說是開源領域的遺憾,想當年 Subsonic 不用生成一行代碼的理念是多麼的吸引眼球,而其易用性也是吸引大批開發者的重要因素。AppBox 3.0會使用Entity Framwork的Code First開發模式對AppBox進行徹底重構,到時你能夠看到Entity Framework在項目開發中的一些最佳實踐。 ide
三:形同雞肋的概念「模塊」。在AppBox v2.0中,模塊的引入也是參考了不少開源的權限框架,但模塊僅僅是做爲權限分組沒有實際的意義,同時引入一個沒有多大意義的概念會形成用戶概念上的混淆(不少用戶在問菜單和模塊的關係),同時數據庫設計會複雜的多的多。AppBox v3.0首創的「扁平化的權限設計」完全拋棄了「模塊」的概念,從而在數據庫設計、邏輯代碼和用戶體驗上有很大的提高。工具
AppBox v2.0 免費下載地址:http://fineui.com/bbs/forum.php?mod=viewthread&tid=3788
注:
1. AppBox v2.0 是免費軟件,已經能夠免費下載了;
2. AppBox v3.0 是捐贈軟件,你能夠經過捐贈做者來獲取AppBox v3.0的所有源代碼(http://fineui.com/donate/)。
AppBox v3.0採用全新的「扁平化的權限設計」,從而簡化了數據庫設計和代碼編寫工做,也提高了用戶體驗,是由三生石上通過思考建立的全新權限設計理念。前端展示使用最新的 FineUI v3.3.1,ORM工具是流行的Entity Framework v5.0(Code First),開發工具是 Visual Studio 2012(.Net Framework 4.5)。在這裏,你能夠學習到全新的理念和知識,以及將FineUI和Entity Framework應用到項目的最佳實踐。
接下來的一段時間,我會經過一系列的文章來解密此次升級全過程,敬請天天關注個人博客:
1. AppBox升級進行時 - 擁抱Entity Framework的Code First開發模式
3. AppBox升級進行時 - Entity Framework的增刪改查
4. AppBox升級進行時 - 如何向OrderBy傳遞字符串參數(Entity Framework)
5. AppBox升級進行時 - 關聯表查詢與更新(Entity Framework)
6. AppBox升級進行時 - Attach陷阱(Entity Framework)
7. AppBox升級進行時 - Any與All的用法(Entity Framework)
8. AppBox升級進行時 - 經典的表單和表格頁面(FineUI)
9. AppBox升級進行時 - 經典的主從表頁面(FineUI)
10. AppBox升級進行時 - 跨頁保存表格的選中項(FineUI)
11. AppBox升級進行時 - 向子窗口傳值,向父窗口回傳值(FineUI)
12. AppBox升級進行時 - 角色的權限管理頁面(FineUI)
13. AppBox升級進行時 - 適當的JavaScript爲頁面增色(FineUI)
14. AppBox升級進行時 - 如何控制按鈕和表格內按鈕的權限
15. AppBox升級進行時 - FineUI和EF祝你一臂之力(完結篇)
注:AppBox v3.0 是捐贈軟件,你能夠經過捐贈做者來獲取AppBox v3.0的所有源代碼(http://fineui.com/donate/)。
AppBox v3.0
AppBox 是基於 FineUI 的通用權限管理框架,包括用戶管理、職稱管理、部門管理、角色管理、角色權限管理等模塊。
技術支持:http://fineui.com/bbs/
注:
1. AppBox做爲演示程序,請不要直接用於真實項目。
2. AppBox做爲演示程序,版本之間不兼容,也不支持版本升級。
使用說明:
1. 用 VS2012 打開工程文件,F5運行便可(默認使用VS2012自帶的LocalDB數據庫)。
用戶名:admin
密碼:admin2. 若是須要鏈接特定數據庫,請在 Web.confg 中修改數據庫鏈接字符串,並修改 AppBoxContext 類中使用的數據庫鏈接名稱。
發佈歷史:+2013-08-28 v3.0
-基於最新的FineUI和Entity Framework(Code First開發模式)。
-扁平化的權限設計,簡單高效易於擴展。
-修正彈出框高度變小時表單仍然不出現滾動條的問題。
-超級管理員賬號(admin)不受系統權限控制,默認擁有全部權限。
-只有超級管理員本身才能編輯本身。
+2012-12-17 v2.1
-修正新增和編輯部門時,沒法選擇頂級部門的BUG。
-修正用戶表的date類型sqlserver2005沒法識別的問題。
-修正工程的編譯錯誤。
-修正能夠添加劇複用戶名的用戶;用戶名不可編輯;性別爲必填項。
-編輯新增菜單時,模塊名稱只能選擇,這個名稱是從代碼來的。
+2012-12-09 v2.0
-配置項增長「菜單樣式」和「網站主題」。
-表格增長「每頁記錄數」過濾條件。
-刪除「角色菜單管理」菜單,如今從「角色模塊管理」得到角色擁有的菜單列表。
-如今須要在ModuleTypeHelper代碼中定義模塊的標題;「菜單管理」中的菜單標題能夠從模塊標題同步過來。
-一個用戶能夠屬於多個角色;刪除角色以前須要先清空屬於此角色的用戶列表。
+優化編輯用戶和新增用戶窗體。
-性別從下拉列表變爲單選框列表。
-所屬角色從下列列表變爲觸發器輸入框,在新窗口中選擇用戶所屬的角色。
-所屬部門從下列列表變爲觸發器輸入框,在新窗口中選擇用戶所屬的部門。
-增長擁有職稱字段,一樣爲觸發器輸入框。
-添加用戶到當前角色窗體,能夠在表格中跨頁選擇多個用戶。
-用戶表增長了一些字段,好比分機號、住址、身份證號、到職日期等。
-一個用戶只能屬於一個部門;刪除部門以前須要先清空屬於此部門的用戶列表。
-一個用戶能夠擁有多個職稱;刪除職稱以前須要先清空擁有此職稱的用戶列表。
+2012-06-24 v1.0
-第一個正式版本。
-AppBox爲捐贈軟件,請捐贈做者來獲取所有源代碼(http://fineui.com/donate/)。
+2009-09-26 v0.1.0
-第一個開源版本。
Copyright 2009-2013 sanshi.ustc@gmail.com, All rights reserved.
更多運行時界面截圖,請移步:http://fineui.com/bbs/forum.php?mod=viewthread&tid=3788