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

  • 相关阅读:
    生物神经网络和人工神经网络浅谈
    卷积神经网络
    DOM进阶之HTMl属性操作(对象属性)
    01 selenium基本使用补充
    01 selenium基本使用
    day4笔记
    03 获取豆瓣电影top250
    02 爬取视频
    day3笔记
    01 requests基本使用
  • 原文地址:https://www.cnblogs.com/darrenji/p/3754147.html
Copyright © 2011-2022 走看看