如何使用和https://limfx.pro 相同的后端技术?
limfx的后端技术栈为mongodb + Asp. Net Core 3.1,我们的开发人员在开发过程中封装了一部分通用的功能,主要包括mongodb的快速CRUD操作,多线程后台Email发送服务,脏字过滤,访问频率限制等,供其他开发者使用,以加快开发速度。这部分代码目前并没有开源,但未来有开源计划。
这个项目尽可能的封装了我们认为开发中常用的功能,并且加入了中文的xml注释,所以如果你觉得文档没说清楚,不必担心,代码提示里会告诉你具体的用法。
这些功能已经封装进入LimFx.Commonnuget包,在创建新项目之后,请安装该nuget包至项目。
注意:limfx的nuget包支持.Net standard 2.1,所以请创建.Net Core 3.0版本以上的项目
在StartUp.cs
的Configure
方法中
app.UseRateLimiter(1000, 10, 3600000, 100, 1000);
第一个参数是ip限制的重设时间,毫秒单位;第二个参数是在重设时间内的某一ip最大允许请求数,若超过该数字则该ip会进入黑名单;第三个参数是进入黑名单后的封禁时间,毫秒单位;第四个是总请求限制数;第五个参数是总请求限制的重设时间,单位为毫秒,该期间内总请求数超过第四个参数的话触发保护,在重设前不再接受请求。
见此处
- 此方法可以通过在controller或路径方法上添加
RateLimitAttribute
来详细自定义某路径在一定时间内被一个ip的上限访问次数 - 使用此方法需要使用asp的身份认证服务,代码中应当先注入授权和认证服务,例如:
services.AddAuthentication(op=> { op.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; }).AddCookie(); services.AddAuthorization(op => { op.InvokeHandlersAfterFailure = false; });
在StartUp.cs
的ConfigureServices
方法中
services.AddEnhancedRateLimiter(ClaimTypes.UserData, 1000, 1000);
- 第一个参数是用于鉴别不同用户的claim,默认为
ClaimTypes.UserData
。建议往这个claim里保存能唯一标识用户的信息,例如ip - 第二个参数是重设所有请求记录的间隔,毫秒单位
- 第三个参数是黑名单屏蔽时间,毫秒单位