午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

ASP.NET MVC限制同一個(gè)IP地址單位時(shí)間間隔內(nèi)的請(qǐng)求次數(shù)

瀏覽:649日期:2022-06-08 15:19:06

有時(shí)候,當(dāng)用戶請(qǐng)求一個(gè)Controller下的Action,我們希望,在單位時(shí)間間隔內(nèi),比如每秒,每分鐘,每小時(shí),每天,每星期,限制同一個(gè)IP地址對(duì)某個(gè)Action的請(qǐng)求次數(shù)。如何做呢?

stefanprodan的MvcThrottle能很好地解決這個(gè)問題,以及其它類型的IP限制問題。在這里:https://github.com/stefanprodan/MvcThrottle

把項(xiàng)目從GitHub下載下來,在本地打開。

找到MvcThrottle類庫(kù),打開ThrottlingFilter這個(gè)類,在該類的OnActionExecuting方法中修改如下:

//check if limit is reachedif (rateLimit > 0 && throttleCounter.TotalRequests > rateLimit){    //log blocked request    if (Logger != null) Logger.Log(ComputeLogEntry(requestId, identity, throttleCounter, rateLimitPeriod.ToString(), rateLimit, filterContext.HttpContext.Request));    //break execution and return 409     var message = string.IsNullOrEmpty(QuotaExceededMessage) ?"HTTP request quota exceeded! maximum admitted {0} per {1}" : QuotaExceededMessage;    //add status code and retry after x seconds to response    filterContext.HttpContext.Response.StatusCode = (int)QuotaExceededResponseCode;    filterContext.HttpContext.Response.Headers.Set("Retry-After", RetryAfterFrom(throttleCounter.Timestamp, rateLimitPeriod));    filterContext.Result = QuotaExceededResult(filterContext.RequestContext,string.Format(message, rateLimit, rateLimitPeriod),QuotaExceededResponseCode,requestId);    return;}

把以上替換成

//check if limit is reachedif (rateLimit > 0 && throttleCounter.TotalRequests > rateLimit){    filterContext.HttpContext.Response.Redirect("/Error.html");           return;}  

讓其在超過次數(shù)時(shí),跳轉(zhuǎn)到項(xiàng)目根目錄下的Error.html文件。

生成該類庫(kù),類庫(kù)MvcThrottle.dll生成在類庫(kù)的bin/Debug文件夾下。

在ASP.NET MVC 4 下創(chuàng)建一個(gè)項(xiàng)目。

在項(xiàng)目根目錄下創(chuàng)建一個(gè)Library文件夾,把剛才的MvcThrottle.dll拷貝其中。

引用Library文件夾下的MvcThrottle.dll組件。

在App_Start文件夾中,修改FilterConfig類如下:

    public class FilterConfig    {public static void RegisterGlobalFilters(GlobalFilterCollection filters){    var throttleFilter = new ThrottlingFilter    {Policy = new ThrottlePolicy(perSecond: 1, perMinute: 10, perHour: 60 * 10, perDay: 600 * 10){    IpThrottling = true},Repository = new CacheRepository()    };    filters.Add(throttleFilter);}    }

創(chuàng)建HomeController,編寫如下:

    public class HomeController : Controller    {public ActionResult Index(){    return View();}[EnableThrottling(PerSecond = 2, PerMinute = 5, PerHour = 30, PerDay = 300)]public ActionResult Other(){    return View();}[HttpPost][EnableThrottling(PerSecond = 2, PerMinute = 5, PerHour = 30, PerDay = 300)]public ActionResult GetSth(){    return Json(new {msg=true});}    }

生成解決方案。

報(bào)錯(cuò)了!What Happened?

原來MvcThrottle是ASP.NET MVC 5下開發(fā)的。

有辦法。重新打開MvcThrottle項(xiàng)目的類庫(kù),在引用中刪除原來的System.Web.Mvc,重新引用本地ASP.NET MVC4版本,重新引用本地的System.Web.Mvc。

重新生成類庫(kù),重新拷貝到Library文件夾下,成功生成解決方案。

在Home/Index.cshtml視圖中:

@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>Index</h2><input type="button" id="btn" value="請(qǐng)求"/>@section scripts{    <script type="text/javascript">$(function() {    $("#btn").on("click", function() {$.post("@Url.Action("GetSth")",function(data) {    if (data.msg) {alert("請(qǐng)求成功一次");    } else {alert("請(qǐng)求次數(shù)過多");    }});    });});    </script>}

當(dāng)在單位時(shí)間間隔內(nèi)超過規(guī)定次數(shù),就彈出"請(qǐng)求次數(shù)過多"提示框。

在Home/Other.cshtml視圖中:

@{    ViewBag.Title = "Other";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>Other</h2>

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

標(biāo)簽: ASP.NET
相關(guān)文章:
主站蜘蛛池模板: 午夜小视频在线播放 | 超碰99在线| 欧美精品四区 | 激情第一页 | а天堂中文在线资源 | 亚洲男人天堂2019 | 亚洲三级在线视频 | 欧洲av一区 | 亚洲激情视频 | 日本天堂在线播放 | 国产精品成人网 | 日韩欧美综合 | 亚洲大片免费 | 中文字幕永久在线 | 欧美日韩在线视频免费 | 五月婷婷伊人网 | 成年人免费网站在线观看 | 国产精选第一页 | 正在播放国产一区 | 香蕉视频在线观看网站 | 在线观看午夜视频 | 国产精品1234| 欧美午夜精品一区二区 | 久久国产精品免费观看 | 精品国产一区二区三区久久久久久 | 欧美成人精品一区二区 | 国产第页| 久久99热这里只有精品 | 91网站免费在线观看 | 国产福利在线 | 久久精品三级 | 黄色片久久久 | 亚洲最新网址 | 91国产一区二区 | 91在线一区| 欧美视频一区在线观看 | 国产精品国产 | 国产精品久久久久久久久 | 亚洲午夜精品一区二区三区他趣 | 日韩中文欧美 | 久草视频手机在线 |