当前位置: 首页 > news >正文

行业门户网站设计做网站的公司怎么找

行业门户网站设计,做网站的公司怎么找,十堰网站建设电话,wordpress ifanr主题2019独角兽企业重金招聘Python工程师标准 当我们用.net MVC构建网站平台的时候#xff0c;势必会对网站平台的安全性和用户的使用权限进行一个统一的构建#xff0c;首先在.net MVC 架构中#xff0c;系统已经将权限管理分为三个层面来进行管理#xff0c;第… 2019独角兽企业重金招聘Python工程师标准 当我们用.net MVC构建网站平台的时候势必会对网站平台的安全性和用户的使用权限进行一个统一的构建首先在.net MVC 架构中系统已经将权限管理分为三个层面来进行管理第一层面是 登录管理也就是说在这个层面上完成用户口令的验证即完成用户的登录系统保存用户的登录记录。第二层面是授权即赋予用户是否具备使用权限是通过 AuthorizeAttribute 的特性来进行控制和管理的。第三个层面是是凭据缓存机制系统建立System.Security.Claims.Claim来实现的一旦登录成功系统就会在Cookies里面缓存给用户一个Claim这样完成了用户登录信息的缓存。 那么如果对某一个模块具体进行权限控制呢为了建立一个更加灵活的管理机制我们采用了建立自己的 AuthorizeAttribute 来完成。首先我们来对需求进行一个简单的分析如下图所示一个功能模块我们可以通过指定用户或指定权限来完成也可能在使用时通过角色和权限的控制来完成。 也就是说用户可以通过用户也可以通过角色来进行控制也可以在运行期通过角色和功能模块的指定来进行。 针对这个需求我们建立了如下数据结构 人员和角色是通过用户归属角色表进行关联的而“功能权限控制”是功能直接和用户还是角色关联控制的。 为了实现这个功能设计首先我们先在Models中建立四个基础信息类 namespace VonPortal.Web.Models {/// summary人员基本信息 信息类/summarypublic class UserInfo : IUserint{public int Id{get { return ID; }}#region Public Properties/// summary序号/summary[Required][Display(Name  序号)]public int ID { get; set; }/// summary登录名/summary[Required][Display(Name  登录名)]public string UserName { get; set; }/// summary姓氏/summary[Display(Name  姓氏)]public string FirstName { get; set; }/// summary名字/summary[Display(Name  名字)]public string LastName { get; set; }/// summary显示名称/summary[Display(Name  显示名称)]public string DisplayName { get; set; }/// summary称谓/summary[Display(Name  称谓)]public string Title { get; set; }/// summary简称/summary[Required][Display(Name  简称)]public string ShortName { get; set; }/// summary电子邮箱/summary[Required][Display(Name  电子邮箱)]public string EMail { get; set; }/// summary登录口令/summary[Display(Name  登录口令)]public string Password { get { return _Password; } set { _Password  UserCtrl.CryptPassword(value); } }internal string _Password  ;/// summary创建时间/summary[Display(Name  创建时间)]public DateTime CreateDate { get; set; }/// summary最后访问时间/summary[Display(Name  最后访问时间)]public DateTime LastAccess { get; set; }#endregion} } #region 角色信息信息类声明 namespace VonPortal.Web.Models {/// summary角色信息 信息类/summarypublic class RoleInfo : IRoleint{public int Id{get{return ID;}}public string Name{get{return RoleName;}set{RoleName  value;}}#region Constructors/// summary/// 构造函数/// /summarypublic RoleInfo(){}/// summary/// 含初始化构造函数/// /summary/// param nameID序号/param/// param nameGroupName组名称/param/// param nameRoleName角色名称/param/// param nameSiteIdx站点序号/param/// param nameParentIdx上级节点/param/// param nameInheritKind继承关系/param/// param nameDescription角色说明/parampublic RoleInfo(int ID, string GroupName, string RoleName, int SiteIdx, int ParentIdx, int InheritKind, string Description){this.ID  ID;this.GroupName  GroupName;this.RoleName  RoleName;this.SiteIdx  SiteIdx;this.ParentIdx  ParentIdx;this.InheritKind  InheritKind;this.Description  Description;}#endregion#region Public Properties/// summary序号/summary[Required][Display(Name  序号)]public int ID { get; set; }/// summary组名称/summary[Display(Name  组名称)]public string GroupName { get; set; }/// summary角色名称/summary[Display(Name  角色名称)]public string RoleName { get; set; }/// summary站点序号/summary[Required][Display(Name  站点序号)]public int SiteIdx { get; set; }/// summary上级节点/summary[Required][Display(Name  上级节点)]public int ParentIdx { get; set; }/// summary继承关系/summary[Display(Name  继承关系)]public int InheritKind { get; set; }/// summary角色说明/summary[Display(Name  角色说明)]public string Description { get; set; }#endregion} } #endregion //功能权限控制PTL_ActionRight #region 功能权限控制信息类声明 namespace VonPortal.Web.Models {/// summary功能权限控制 信息类/summarypublic class ActionRightInfo{#region Constructors/// summary/// 构造函数/// /summarypublic ActionRightInfo(){}/// summary/// 含初始化构造函数/// /summary/// param nameID序号/param/// param nameSiteIdx站点序号/param/// param nameRightName功能名称/param/// param nameRoleOrUser角色或用户序号/param/// param nameSrcIdx控制源序号/parampublic ActionRightInfo(int ID, int SiteIdx, string RightName, bool RoleOrUser, int SrcIdx){this.ID  ID;this.SiteIdx  SiteIdx;this.RightName  RightName;this.RoleOrUser  RoleOrUser;this.SrcIdx  SrcIdx;}#endregion#region Public Properties/// summary序号/summary[Required][Display(Name  序号)]public int ID { get; set; }/// summary站点序号/summary[Required][Display(Name  站点序号)]public int SiteIdx { get; set; }/// summary功能名称/summary[Display(Name  功能名称)]public string RightName { get; set; }/// summary角色或用户序号/summary[Required][Display(Name  角色或用户序号)]public bool RoleOrUser { get; set; }/// summary控制源序号/summary[Required][Display(Name  控制源序号)]public int SrcIdx { get; set; }#endregion} } #endregion 其控制与数据库存储的类这里就省略了首先大家知道要实现这个方案作为基础的信息基类就是这三个类即UserInfo、RoleInfo、ActionRightInfo。 我们下面就进入今天的主题如何通过建立自己的AuthorizeAttribute特性来实现角色控制。 我们先来分析一下AuthorizeAttribute的执行过程。在特性指定到系统的某一个模块上时即为某一个 Controller 指定一个我们自己的权限认证特性指定后当系统执行时系统就会调用 AuthorizeAttribute 中的 OnAuthorization 函数来完成在 OnAuthorization 函数的执行过程中系统会调用 bool AuthorizeCore(HttpContextBase httpContext) 函数完成具体的验证过程如果失败了系统会调用 void HandleUnauthorizedRequest(AuthorizationContext context)来进行处理由此我们就可以建立一个自己的 AuthorizeAttribute  /****************************************************************************************************************** * 权限验证单元 *   RightAuthorizeAttribute 是继承 AuthorizeAttribute 的权限控制属性他是基于功能的权限认证模式即采用功能名称 *   进行认证认证过程基于 AuthorizeAttribute 进行首先系统会调用 OnAuthorization 进行验证在这里我们主要进行 *   验证前准备 ****************************************************************************************************************/ using System; using System.Threading.Tasks; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin; using Microsoft.Owin.Security; using System.Web.Mvc; using System.Web.Routing; using System.Web; using System.Collections.Generic; using VonPortal.Web.Operators;namespace VonPortal.Web.Models {/// summary/// 权限控制单元/// /summarypublic class RightAuthorizeAttribute : AuthorizeAttribute{/// summary/// 功能名称/// /summarypublic string ActionNames { get; set; }private string moduleName  ;public override void OnAuthorization(AuthorizationContext filterContext){string controllerName  filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;string actionName  filterContext.ActionDescriptor.ActionName;moduleName  controllerName  /  actionName;base.OnAuthorization(filterContext);}protected override bool AuthorizeCore(HttpContextBase httpContext){bool result  false;if (httpContext  null)throw new ArgumentNullException(HttpContext);if (!httpContext.User.Identity.IsAuthenticated)return false;// 得到用户的唯一序号int userIdx  httpContext.User.Identity.GetUserIdint();Listint roles  (new UserRoleCtrl(null)).ListByROLE_REF_USER(userIdx);#region 检测 Roles 即检测指定的 Role 是否存在如果设定了但不存在则表明无权访问。if (Roles ! null  Roles.Length  0){string authRole  ,  Roles.ToLower()  ,;result  false;foreach (int roleIdx in roles){RoleInfo role  (new RoleCtrl(null)).GetByRole(roleIdx);result  role ! null  authRole.IndexOf(,  role.RoleName.ToLower()  ,)  0;if (result) break;}if (!result) return false;}#endregion#region 检测 Users 即检测指定的 Users 是否存在如果设定了但不存在则表明无权访问。string userName  httpContext.User.Identity.GetUserName();if (Users ! null  Users.Length  0){if ((,  Users.ToLower()  ,).IndexOf(,  userName.ToLower()  ,)  0)return false;result  true;}#endregion#region 检测 ActionNames 即检测指定的 ActionNames 是否存在如果设定了但不存在则表明无权访问。if (ActionNames ! null  ActionNames.Length  0){string authAction  ,  ActionNames.ToLower()  ,; // 检测用户本身是否具备该功能的权限foreach (ActionRightInfo right in (new ActionRightCtrl(null)).ListBySrcIdx(true, userIdx)){if (ActionNames.IndexOf(,  right.RightName  ,)  0) return true;}// 检测用户拥有的角色本身是否具备该功能的权限foreach (int roleIdx in roles){foreach (ActionRightInfo right in (new ActionRightCtrl(null)).ListBySrcIdx(false, roleIdx)){if (ActionNames.IndexOf(,  right.RightName  ,)  0) return true;}}}else if (!result){string authAction  ,  moduleName.ToLower()  ,;// 检测用户本身是否具备该功能的权限foreach (ActionRightInfo right in (new ActionRightCtrl(null)).ListBySrcIdx(true, userIdx)){if (ActionNames.IndexOf(,  right.RightName  ,)  0) return true;}// 检测用户拥有的角色本身是否具备该功能的权限foreach (int roleIdx in roles){foreach (ActionRightInfo right in (new ActionRightCtrl(null)).ListBySrcIdx(false, roleIdx)){if (ActionNames.IndexOf(,  right.RightName  ,)  0) return true;}}}#endregionreturn result;}protected override void HandleUnauthorizedRequest(AuthorizationContext context){if (context  null){throw new ArgumentNullException(filterContext);}else{string path  context.HttpContext.Request.Path;string strUrl  /Account/Login?returnUrl{0};context.HttpContext.Response.Redirect(string.Format(strUrl, HttpUtility.UrlEncode(path)), true);}}} } 使用方法 在Controller中的Action使用前增加我们的RightAuthorize的特性就可以了。 1、指定功能名称验证用户权限         [RightAuthorize(ActionNames UserManager)]         public ActionResult UserList(...){...} 2、指定角色名称验证用户权限         [RightAuthorize(Roles Admin)]         public ActionResult UserDetails(...){...} 3、指定用户名称验证用户权限         [RightAuthorize(Users Administrator,Host)]         public ActionResult UserEdit(...){...} 4、默认通过ControllerAction来验证用户权限默认的功能名称是ControllerName/ActionName         [RightAuthorize()]         public ActionResult UserDelete(...){...} 转载于:https://my.oschina.net/u/2308182/blog/659217
http://www.w-s-a.com/news/958633/

相关文章:

  • 江苏省建设厅网站建筑电工证wordpress收费插件大全
  • 北京中国建设银行招聘信息网站宁德蕉城住房和城乡建设部网站
  • 泉州做网站优化哪家好wordpress站点预览
  • 创建门户网站一页网站首页图如何做
  • 服装手机商城网站建设sns社交网站有哪些
  • 无锡工程建设招标网站怎么自己建设公司网站
  • 哪个网站可以学做咸菜安卓软件开发需要学什么软件
  • 自有网站建设的团队遂宁市建设局网站
  • 网站建设哪个好一些网站内容导出
  • 什么网站的页面做的比较好看网上做平面设计的网站
  • 网站建设单选网站建设学校培训学校
  • 可以做app的网站logo设计在线生成免费标小智
  • 网站变更备案做酒类网站
  • 网站必须要备案吗东莞市非凡网站建设
  • 太原建网站公司网站设计的流程是怎样的
  • 网站开发交易平台北京网站建设的价格低
  • 捷克注册公司网站搜索引擎广告推广
  • 网站的实用性青岛九二网络科技有限公司
  • 广东备案网站网站反链如何做
  • 做网站的实施过程企业建设H5响应式网站的5大好处6
  • ps制作个人网站首页景安搭建wordpress
  • 常德建设网站制作网站建设推广是什么工作
  • 长春服务好的网站建设百度推广话术全流程
  • 做的网站浏览的越多越挣钱基于jsp的网站开发开题报告
  • 好的做问卷调查的网站好网站调用时间
  • 广州微网站建设平台阿里云国外服务器
  • 如何把做好的网站代码变成网页wordpress shortcode土豆 视频
  • 网站改版竞品分析怎么做中山网站建设文化价格
  • 玉林市网站开发公司电话做网站空间 阿里云
  • 南充做网站略奥网络免费的正能量视频素材网站