作者:格林威治 | 来源:互联网 | 2022-11-30 15:34
我有一个简单的ASP.Net Core 2.1 MVC应用程序,并且在其中一个控制器中,我想实现一个仅接受本地请求的操作(即,请求源自127.0.0.1,或者来自与服务器IP相同的地址) 。
我一直在ASP.Net Core中寻找适合此目的的筛选器,但似乎找不到。我可以使用AuthorizeAttribute,例如[Authorize(Policy = "LocalOnly")]
并在启动中的ConfigureServices中注册相应的策略:
services.AddAuthorization(optiOns=>
{
options.AddPolicy("LocalOnly", policy =>
{
policy.RequireAssertion(cOntext=>
{
if (context.Resource is AuthorizationFilterContext mvcContext)
{
return mvcContext.HttpContext.Request.IsLocal();
}
return false;
});
});
});
IsLocal()
的扩展方法在哪里HttpRequest
?
但是我认为这不是正确的方法-我试图做的实际上不是授权,并且由于我的程序中没有身份验证,因此产生的错误也不正确。
是否有一种简单合法的方法来做我想要的过滤器?还是这实际上应该在控制器的动作逻辑中完成?还是整个检查本地请求的想法不是很正确?
非常感谢您的帮助。