通用权限管理系统如何进行角色判断

面对多个子系统,每个子系统中设置的角色都不一样,如何判断某个用户具有某个角色呢?通用权限系统中提供了一个方法,下面是使用角色接口来实现的判断。

        #region  public static List<BaseRoleEntity> GetCacheRoleList(BaseUserInfo userInfo, bool refreshFlag = false)  获取用户角色  缓存
        /// <summary>
        /// 获取用户角色  缓存
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="refreshFlag"></param>
        /// <returns></returns>
        public static List<BaseRoleEntity> GetCacheRoleList(BaseUserInfo userInfo, bool refreshFlag = false)
        {
            string cacheKey = "GetRoleList" + userInfo.Id;
            if (refreshFlag)
            {
                DataCacheHelper.RemoveCache(cacheKey);
            }
            if (null == DataCacheHelper.GetCache(cacheKey))
            {
                lock (objLock)
                {
                    if (null == DataCacheHelper.GetCache(cacheKey))
                    {
                        try
                        {
                            WebClient webClient = new WebClient();
                            NameValueCollection postValues = new NameValueCollection();
                            postValues.Add("Function", "GetUserRoleList");
                            postValues.Add("UserInfo", userInfo.Serialize());//BaseSystemInfo.UserInfo.Serialize()
                            postValues.Add("userId", userInfo.Id);//BaseSystemInfo.UserInfo.Serialize()
                            // 向服务器发送POST数据
                            byte[] responseArray = webClient.UploadValues(userRoleServiceURL, postValues);
                            string response = Encoding.UTF8.GetString(responseArray);
                            List<BaseRoleEntity> list;
                            if (!string.IsNullOrEmpty(response))
                            {
                                list = javaScriptSerializer.Deserialize<List<BaseRoleEntity>>(response);
                                DataCacheHelper.SetCache(cacheKey, list, null, DateTime.Now.AddMinutes(120), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);
                            }
                        }
                        catch (Exception ex)
                        {
                            LogHelper.WriteSmtp(userInfo.UserName + "获取用户角色时出错", ex);
                            LogHelper.OracleWarn(userInfo, "获取用户角色时出错", userInfo.UserName + "获取用户角色时出错", "GetCacheRoleList(BaseUserInfo userInfo, bool refreshFlag = false)", typeof(UserHelp), ex);
                        }
                    }
                }
            }
            return DataCacheHelper.GetCache(cacheKey) as List<BaseRoleEntity>;
        }
        #endregion

        #region public static bool HasRole(BaseUserInfo userInfo, string roleName) 判断某个用户是否有某个角色
        /// <summary>
        /// 判断某个用户是否有某个角色
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="roleName"></param>
        /// <returns></returns>
        public static bool HasRole(BaseUserInfo userInfo, string roleName)
        {
            bool hasRole = false;
            List<BaseRoleEntity> roleEntits = GetCacheRoleList(userInfo);
            for (int i = 0; i < roleEntits.Count; i++)
            {
                if (roleEntits[i].RealName == roleName)
                {
                    hasRole = true;
                    break;
                }
            }
            return hasRole;
        }
        #endregion

调用方法就很简单了,HasRole(userinfo,"角色名字")。

另外,为了方便调用,建议每个子系统中定义好角色常量,角色常量值与在管理系统中配置的保持一样

    public class RoleCode
    {
        /// <summary>
        /// 系统管理员
        /// </summary>
        public const string Admin = "Admin";

        /// <summary>
        /// 系统测试人员
        /// </summary>
        public const string Tester = "Tester";

        /// <summary>
        /// 业务主管
        /// </summary>
        public const string BusinessAdmin = "BusinessAdmin ";

    }

此时,角色判断调用就是这样了:HasRole(userinfo,RoleCode.Tester)。 系统测试人员的判断

通用权限管理系统 访问地址:http://www.cnblogs.com/jirigala/

时间: 2024-10-11 13:13:15

通用权限管理系统如何进行角色判断的相关文章

通用权限管理系统菜单展示的一个技巧

从这篇文章,希望您了解吉日嘎拉通用权限管理系统菜单项展示技巧. 项目中使用了吉日嘎拉的通用权限管理系统,几十个子系统均由该权限管理系统管理. 在系统中配置好相关菜单及非菜单项,配置截图: 菜单权限设置截图 通过下拉菜单进入其中的一个子系统 子系统中的菜单项(菜单项表示该项会在前端需要展示出来,用于用户点击的项目),其中的公开表示所有人均可看到该菜单项目. 子系统中的非菜单项(非菜单项表示该项目不需要在前端展示出来,比如有些在页面中的弹出窗口.按钮等项目) 通过单点登录到子系统以后,通过一个服务获

通用权限管理系统学习心得

一直相信阅读优秀的代码,是学习编程的最好方式,经过一段时间对吉日嘎拉通用权限管理系统的学习和使用,我从中受益良多,其中不乏一些优秀的设计思想,其中给我印象比较深刻的有几点,我将按照我个人的理解写下学习笔记,希望能给自己这段时间的学习留下点什么,同时也希望能别人能够通过阅读我的文章来获得一些帮助. 这篇文章我也来探讨一下数据网格设置功能的实现 每个网格的设置对应保存在本地启动目录下UserParameter的文件下的一个XML文件,其中XML文件的命名规则:窗体名称_网格名称.xml (如窗体名称

使用通用权限管理系统组件的随想 - 提高开发能力、规范开发、快速见效

本人供职于国内一家比较知名的物流公司,一直从事于基层公司物流软件的规划和设计开发工作,在长期的工作实践中深深地体会到作为不是专业的软件行业而又从事软件开发行业的业余性的软件开发设计人员来说,在工作中需要克服的困难和面对的艰辛有多大多难. 对与专业的软件开发设计公司来说,毋庸置疑的一点是都会有自己成熟稳定的开发框架和组件,并且是在不断的完善中,对供职其中的开发设计人员在完成业务性的开发设计工作外日常工作的一个重心就在于了解.熟悉进而创新性的完善他.作为软件开发设计人员都知道,任何一个软件系统都离不

分享一套MVC4+EF5+EasyUI技术实现通用权限管理系统

课程讲师:闲筝 课程分类:.NET框架 适合人群:高级 课时数量:150课时 更新程度:完毕 服务类型:B类(VIP服务类课程) 用到技术:MVC.EF.T4.Log4net.EasyUI.rdlc.spring.net等 涉及项目:通用权限管理系统.十二生肖案例.EasyUI150项示例 课程咨询QQ:2050339477 链接:http://ibeifeng.taobao.com/index.htm?spm=2013.1.w5002-9616636101.2.aNEcLW 项目背景: 自从微

通用权限管理系统数据权限设置功能解析

在权限管理系统中,数据权限是比较难的,在我们通用权限系统中,数据权限指的是用户基于某个权限域对某些基础数据的操作权限,如上图,公司管理这个菜单被定义是数据权限,表示某些人在公司管理是可指定访问哪些基础数据,这个要与应用结合.如下图,可以限制该9999xudeng003用户在公司管理页面只能管理其中的几个公司. 目前基于用户的数据权限BS的管理功能已完成,这个是权限系统最难开发的一部分. 下面是MVC控制器调的通用权限管理系统底层的方法: //---------------------------

零基础到CS开发高手通用权限管理系统全程实录

零基础到CS开发高手通用权限管理系统全程实录(Devexpress.FastReport.NET.WebService.智能客户端)课程讲师:闲筝课程分类:.NET框架适合人群:中级课时数量:70课时更新程度:80%用到技术:Devexpress.FastReport.NET.WebService.智能客户端涉及项目:通权系统.智能客户端.报表设计器咨询qq:1840215592 详细介绍:http://www.ibeifeng.com/goods-493.html项目主要功能模块:闲筝老师的.

通用权限管理系统接口文档V4.2 版本之消息接口介绍

通用权限管理系统提供的消息接口可实现消息获取,消息发送,底层使用Redis对消息进行缓存,解决消息的并发请求对数据库的压力. 前端可以通过客户端轮询来获取最新消息,前端效果截图如下: 1.发送消息 2.收到消息 3.消息回复 前端效果参考代码,前端可根据自己的需要进行功能封装,实现即时消息的功能,主要是JS实现的消息轮询和发送功能, Html部分: <div style="display: none" id="ShowMessage"> <tabl

如何在通用权限管理系统中集成log4net日志功能

开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个组件的介绍 ”Log4net是基于.net开发的一款非常著名的记录日志开源组件.最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源, 于另外的一个非常著名的姐妹组件-log4j.现由Apache组织开发与维护.此日志架构是可灵活扩展,且通过配置文件来设置日志的属性及输出,

通用权限管理系统之权限菜单zTree树的展示及移动的处理方法

在通用权限管理系统中,有很多数据结构是有父子关系的,如组织机构,部门,权限菜单等,在展示的时候,大多数是通过zTree树的形式展现的,如下: 权限菜单展示 这种数据后台输出比较容易处理,参考如下获取某个子系统的全部操作菜单: 后台输出zTree树的数据 /// <summary> /// 获取module树结构数据 /// </summary> /// <param name="systemCode"></param> /// <r