天天看點

C# ASP.NET 最常用的通用權限的3個方法例子展示(每個功能一行代碼實作)

C# ASP.NET 最常用的通用權限的3個方法例子展示。

在 UserPermission.aspx 的例子如下,原檔案的位置如下圖:

參考代碼如下:

代碼

//------------------------------------------------------------

// All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd. 

using System;

using System.IO;

using System.Data;

namespace DotNet.Web.Permission

{

    using DotNet.Service;

    using DotNet.Utilities;

    using Jirisoft.Permission.Model;

    using Jirisoft.Permission.Business;

    /// <remarks>

    /// UserPermission

    /// 使用者目前權限的擷取例子

    /// 

    /// 修改紀錄

    ///    版本:1.0 2010.07.08    JiRiGaLa    寫好例子程式友善别人學習。

    ///    

    /// 版本:1.0

    /// <author>

    ///        <name>JiRiGaLa</name>

    ///        <date>2010.07.08</date>

    /// </author> 

    /// </remarks>

    public partial class UserPermission : BasePage

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            // 當然是使用者需要登入,否則哪裡能知道,現在是判斷誰的權限啊?

            this.UserInfo = Utilities.Login("[email protected]", String.Empty);

            // 1 判斷使用者是否有某個操作權限(在伺服器上判斷)

            // 通路職員的身份證列字段的操作權限

            string permissionItemCode = "Staff.Column.IDCard.Access";

            ServiceManager.Instance.PermissionService.IsAuthorizedByUser(this.UserInfo, this.UserInfo.Id, permissionItemCode);

            // 2 擷取使用者子產品菜單清單

            this.GetUserModules();

            // 3 擷取使用者權限清單

            this.GetUserPermission();

        }

        /// <summary>

        /// 2 擷取使用者子產品菜單清單

        /// </summary>

        private void GetUserModules()

            // 就一行代碼,就可以擷取目前使用者的所有可以通路的子產品,然後自己想怎麼處理就處理,例如變成樹形菜單等等

            DataTable dtUserModule = ServiceManager.Instance.PermissionService.GetModuleDTByUser(this.UserInfo, this.UserInfo.Id);

            this.grvUserModules.DataSource = dtUserModule;

            this.grvUserModules.DataBind();

        /// 3 擷取使用者權限清單

        private void GetUserPermission()

            // 就一行代碼,就可以擷取目前使用者的所擁有的權限清單

            DataTable dtUserPermission = ServiceManager.Instance.PermissionService.GetPermissionDTByUser(this.UserInfo, this.UserInfo.Id);

            this.grvUserPermission.DataSource = dtUserPermission;

            this.grvUserPermission.DataBind();

    }

}

一:使用者可以通路的子產品菜單(使用者-菜單,角色-菜單,使用者-角色,權限-菜單,菜單本身是否公開屬性,菜單的父子歸屬關系,菜單是否有效)按以上結合最終計算出所能通路的菜單集合,當然對超級管理者進行優化處理,簡化權限判斷過程,提高程式運作效率

有一種方法是,一次性把使用者的所有權限都獲得,放在用戶端或者Seesion裡。

另一種方法時,在伺服器上判斷,目前使用者是否有某個權限。

Id

ParentId

Code

FullName

NavigateUrl

10000003

整體資訊化系統

10000005

10000004

FrmRequestAnAccount

申請使用者賬戶

10000007

FrmStaffAddressEdit

我的聯系方式

10000008

FrmStaffAddressAdmin

内部通訊錄

10000015

Appliction

業務應用

10000016

FrmMessageSend

發送消息

10000017

FrmMessage

即時通訊

10000022

FrmAboutThis

關于本軟體

10000024

FrmUserChangePassword

修改密碼

10004099

10004141

使用者下訂單

Modules/Convenience/YongHuDingDan/YongHuDingDanTianJia.aspx

10004100

使用者訂單确認

Modules/Convenience/YongHuDingDan/YongHuDingDanDaiQueRen.aspx

10004101

10004142

訂單狀态查詢

訂單配額稽核查詢

Modules/Convenience/YongHuDingDan/YongHuDingDanPeiEYiQueRen.aspx

10004102

10004140

曆史訂單

Modules/Convenience/YongHuDingDan/YongHuDingDanChaXun.aspx

10004103

10004183

訂單到貨确認

Modules/Convenience/YongHuDingDan/YongHuDingDanDaoHuoQueRen.aspx

10004150

CSa01

訂單管理

Modules/Convenience/YongHuDingDan/YongHuDingDanYiQueRen.aspx

使用者訂單

訂單狀态

Modules/Convenience/YongHuDingDan/YongHuDingDanPeiHuoYiQueRen.aspx

10004144

訂單結算狀态查詢

Modules/Convenience/YongHuDingDan/YongHuDingDanJieSuanYiQueRen.aspx

10004145

訂單配貨狀态查詢

10004148

訂單統計彙總

曆史訂單查詢

終端功能

10004176

使用者已确認訂單

訂單到貨

10004410

使用者已取消訂單

10004429

FrmCodeBuilder

代碼生成器

二:使用者所擁有的權限清單(使用者-權限,角色-權限,權限本身是否公開屬性,權限的父子歸屬關系,權限是否有效)按以上結合最終計算出所擁有的權限集合

10000259

PermissionAdmin

通用權限解決方案

10000560

A系統權限配置

10000564

ASystem.Admin.Access

A系統通路權限

三:目前使用者是否有某個權限的判斷(使用者本身是否超級管理者?)。

            // 1 判斷使用者是否有某個操作權限(在伺服器上判斷)

            // 通路職員的身份證列字段的操作權限

            string permissionItemCode = "Staff.Column.IDCard.Access";

            ServiceManager.Instance.PermissionService.IsAuthorizedByUser(this.UserInfo, this.UserInfo.Id, permissionItemCode);

設定asp.net通用權限的界面參考如下:

C/S的權限配置管理工具 是提供給項目實施人員使用的,在項目開發的前期是給系統架構師用的。

在資料庫管理維護過程中,C/S的配置管理工具是給資料庫管理者用的。

使用者在管理使用過程中,C/S的配置管理工具是給資訊管理者用的。

在軟體開發階段,C/S的管理配置工具是給開發人員、項目經理、測試人員用的。

在開發階段,底層的API,接口函數是給開發人員調用的。

在售前,給客戶示範時,C/S的管理配置工具是給客戶展示實力用的。

在售前,通用權限管理說明文檔是市場銷售人員給客戶寫方案用的。

ASP.NET C#通用權限管理系統,是軟體公司老闆防止開發人員每個人搞一套,是為了提高公司的軟體開發類項目互相相容性差,互相內建性。同時是可以達到快速見效,有個牢靠的底層,防止開發人員流動、走失後導緻整個項目亂套用的。使用成熟的元件,可以提高工作效率,可以有效積累勞動成果,防止在沒必要的事情上瞎折騰,浪費時間,浪費生命。

有1000000人會開發管理軟體,但是可能隻有100000人會開發成熟的權限系統,隻有10000個人能開發出完善的工作流。

将權限管理、工作流管理做到我能力的極緻,一個人隻能做好那麼很少的幾件事情。

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