权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

C# ASP.NET 最常用的通用权限的3个方法例子展示(每个功能一行代码实现)

2010-07-08 23:23  通用C#系统架构  阅读(3513)  评论(22编辑  收藏  举报
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("Jirigala_Bao@Hotmail.com", 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();
        }

        
/// <summary>
        
/// 3 获取用户权限列表
        
/// </summary>
        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 10000004 FrmStaffAddressEdit 我的联系方式  
10000008 10000004 FrmStaffAddressAdmin 内部通讯录  
10000015 10000004 Appliction 业务应用  
10000016 10000004 FrmMessageSend 发送消息  
10000017 10000004 FrmMessage 即时通讯  
10000022 10000004 FrmAboutThis 关于本软件  
10000024 10000004 FrmUserChangePassword 修改密码  
10004099 10004141 用户下订单 用户下订单 Modules/Convenience/YongHuDingDan/YongHuDingDanTianJia.aspx
10004100 10004141 用户订单确认 用户订单确认 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
10004140 10004150 CSa01 订单管理 Modules/Convenience/YongHuDingDan/YongHuDingDanYiQueRen.aspx
10004141 10004140 用户订单 用户订单 Modules/Convenience/YongHuDingDan/YongHuDingDanYiQueRen.aspx
10004142 10004140 订单状态 订单状态 Modules/Convenience/YongHuDingDan/YongHuDingDanPeiHuoYiQueRen.aspx
10004144 10004142 订单结算状态查询 订单结算状态查询 Modules/Convenience/YongHuDingDan/YongHuDingDanJieSuanYiQueRen.aspx
10004145 10004142 订单配货状态查询 订单配货状态查询 Modules/Convenience/YongHuDingDan/YongHuDingDanPeiHuoYiQueRen.aspx
10004148 10004102 订单统计汇总 历史订单查询 Modules/Convenience/YongHuDingDan/YongHuDingDanChaXun.aspx
10004150 10000003 终端功能 终端功能  
10004176 10004141 用户已确认订单 用户已确认订单 Modules/Convenience/YongHuDingDan/YongHuDingDanYiQueRen.aspx
10004183 10004140 订单到货 订单到货 Modules/Convenience/YongHuDingDan/YongHuDingDanDaoHuoQueRen.aspx
10004410 10004141 用户已取消订单 用户已取消订单  
10004429 10000004 FrmCodeBuilder 代码生成器  

 

 


二:用户所拥有的权限列表(用户-权限,角色-权限,权限本身是否公开属性,权限的父子归属关系,权限是否有效)按以上结合最终计算出所拥有的权限集合
Id ParentId Code FullName
10000259 0 PermissionAdmin 通用权限解决方案
10000560 10000259 A系统权限配置 A系统权限配置
10000564 10000560 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#通用权限管理系统,是软件公司老板防止开发人员每个人搞一套,是为了提高公司的软件开发类项目互相兼容性差,互相集成性。同时是可以达到快速见效,有个牢靠的底层,防止开发人员流动、走失后导致整个项目乱套用的。使用成熟的组件,可以提高工作效率,可以有效积累劳动成果,防止在没必要的事情上瞎折腾,浪费时间,浪费生命。

 

只有执着追求,把一个方向做深做精,做个彻底,才会有希望才能更上一层楼。通用权限管理组件使用说明书V3.0.doc

有1000000人会开发管理软件,但是可能只有100000人会开发成熟的权限系统,只有10000个人能开发出完善的工作流。

 

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友