zoukankan      html  css  js  c++  java
  • MVC扩展Filter, 通过继承AuthorizationAttribute限制IP

      为什么需要AuthorizationAttribute

    在没有Authorization系统属性之前,我们可能这样判断:
    Request.IsAuthenticated && User.Identity.IsAuthenticated来判断请求是否有权限。

    有了Authorization系统属性之后,我们可能这样:
    [Authorize]
    public ActionResult SomeAction()

    在Web.config文件中:
    <authentication mode="Forms">
        <forms loginUrl="~/Home/UnAuthorized" timeout="2880" />
    </authentication>

    很显然,有了AuthorizeAttribute这种cross-cutting设计,简化了代码,降低了耦合。

      通过继承AuthorizationAttribute来扩展

    主要是重写AuthorizeCore方法。

    public class SomeAuthorizationAttribute : AuthorizeAttribute
    {
        private List<string> blockIps;
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            LoadBockIpAddresses();
            return (!blockIps.Contains(httpContext.Request.UserHostAddress));
        }
     
        public void LoadBlockIpAddresses()
        {
            blokedIps = new List<string>();
            blockedIps.Add("127.0.0.1");
        }
    }

      使用默认的AuthorizeAttribute

    [Authorize(Users="", Roles="")]
    public ActionResult SomeAction

    同时需要在Web.config中配置:

    <authentication mode="Forms">
      <forms loginUrl="~/Home/UnAuthorized" timeout="2880">
        <credentials>
          <user name="name" password="name"/>
        </credentials>
      </forms>
    </authentication>
    <roleManager enabled="true" cacheRolesInCookie="true" />

    参考资料:
    MVC Filters Part 1 - Authorization Filter

  • 相关阅读:
    pikachu-xss(1)
    eNSP上配置RIPv2的认证
    eNSP模拟器OSPF单区域配置
    OSPF与ACL综合实验
    利用单臂路由实现vlan间路由
    理解Hybrid接口的应用
    eNSP下配置Trunk接口实现跨交换机传递数据
    eNSP上VLAN的基础的配置及access接口
    eNSP下利用三层交换机实现VLAN间路由
    NFS网络文件系统
  • 原文地址:https://www.cnblogs.com/darrenji/p/3754147.html
Copyright © 2011-2022 走看看