你的位置:首页 > 软件开发 > ASP.net > Lind.DDD.Manager里菜单权限的设计

Lind.DDD.Manager里菜单权限的设计

发布时间:2016-07-11 17:00:05
回到目录对于一个后台管理系统来说,你的权限设计与安全是重中之重,当你为一个权限分配一些菜单后,当这个权限的用户没有菜单权限时,这个菜单的URL是不可以被用户访问的,而在之前的设计中,没有考虑到这点,所以本次Lind.DDD.Manager的升级中,需要把这块完善一下,将会在8月的 ...

回到目录

对于一个后台管理系统来说,你的权限设计与安全是重中之重,当你为一个权限分配一些菜单后,当这个权限的用户没有菜单权限时,这个菜单的URL是不可以被用户访问的,而在之前的设计中,没有考虑到这点,所以本次Lind.DDD.Manager的升级中,需要把这块完善一下,将会在8月的Lind.DDD中奉献给大家,敬请期待!

思路

用户访问

==>

get='_blank'>mvc根据url找到controller/action

==>

判断这个URL是否为库中定义的URL(排除非正常URL,PartialView产生的URL)

==>

判断用户是否有这个URL的权限

==>

正常访问

层关系图

Lind.DDD.Manager里菜单权限的设计

实现

使用了MVC环境下的AOP方法拦截技术,它主要通过过滤器(AuthorizeAttribute)来实现对action的拦截,然后注入自己的代码,这也是MVC几大过滤器带给我们的惊喜!

AuthorizeAttribute 为我们提供了一个用户授权的过滤器,当用户访问Action之前,它将被执行

  // 摘要:  //   表示一个特性,该特性用于限制调用方对操作方法的访问。  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]  public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter  {    // 摘要:    //   初始化 System.Web.Mvc.AuthorizeAttribute 类的新实例。    public AuthorizeAttribute();    // 摘要:    //   获取或设置用户角色。    //    // 返回结果:    //   用户角色。    public string Roles { get; set; }    //    // 摘要:    //   获取此特性的唯一标识符。    //    // 返回结果:    //   此特性的唯一标识符。    public override object TypeId { get; }    //    // 摘要:    //   获取或设置授权用户。    //    // 返回结果:    //   授权用户。    public string Users { get; set; }    // 摘要:    //   重写时,提供一个入口点用于进行自定义授权检查。    //    // 参数:    //  httpContext:    //   HTTP 上下文,它封装有关单个 HTTP 请求的所有 HTTP 特定的信息。    //    // 返回结果:    //   如果用户已经过授权,则为 true;否则为 false。    //    // 异常:    //  System.ArgumentNullException:    //   httpContext 参数为 null。    protected virtual bool AuthorizeCore(HttpContextBase httpContext);    //    // 摘要:    //   处理未能授权的 HTTP 请求。    //    // 参数:    //  filterContext:    //   封装有关使用 System.Web.Mvc.AuthorizeAttribute 的信息。filterContext 对象包括控制器、HTTP 上下文、请求上下文、操作结果和路由数据。    protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext);    //    // 摘要:    //   在过程请求授权时调用。    //    // 参数:    //  filterContext:    //   筛选器上下文,它封装有关使用 System.Web.Mvc.AuthorizeAttribute 的信息。    //    // 异常:    //  System.ArgumentNullException:    //   filterContext 参数为 null。    public virtual void OnAuthorization(AuthorizationContext filterContext);    //    // 摘要:    //   在缓存模块请求授权时调用。    //    // 参数:    //  httpContext:    //   HTTP 上下文,它封装有关单个 HTTP 请求的所有 HTTP 特定的信息。    //    // 返回结果:    //   对验证状态的引用。    //    // 异常:    //  System.ArgumentNullException:    //   httpContext 参数为 null。    protected virtual HttpValidationStatus OnCacheAuthorization(HttpContextBase httpContext);  }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Lind.DDD.Manager里菜单权限的设计

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录