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( " 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个人能开发出完善的工作流。

 

 

 

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
 
本文转自jirigala_bao 51CTO博客,原文链接:http://blog.51cto.com/jirigala/806823

相关文章
|
5月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1172 2
|
6月前
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
3711 123
|
11月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
458 0
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
458 18
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
386 13
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
585 12
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
235 6
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
253 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
273 6
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
894 13