在ASP.NET Core中,如何检查请求是否为本地?

marvc1

在常规的ASP.NET中,可以在视图中执行此操作以确定当前请求是否来自本地主机:

HttpContext.Current.Request.IsLocal

但是无论如何,在ASP.NET 6 / Core /中我都找不到类似的东西。

乔恩·史密斯

更新:ASP.NET Core 2.0有一个称为的方法Url.IsLocalUrl(请参阅此Microsoft Docs)。

认为该代码可以正常工作,但我无法对其进行完整的测试

var callingUrl = Request.Headers["Referer"].ToString();
var isLocal = Url.IsLocalUrl(callingUrl);

但是请参阅下面的Will Dean关于此方法的评论:

任何考虑使用“更新”版本来检查Referrer标头的人都应牢记,标头极易被欺骗,其程度不适用于环回IP地址。


原始解决方案

我遇到了这个问题,它在寻找一种解决方案,以了解请求是否在本地。不幸的是,ASP.NET 1.1.0版IsLocal在连接上没有方法。我在一个名为Strathweb的网站上找到了一个解决方案,但这也已经过时了。

我创建了自己的IsLocal扩展程序,它似乎可以运行,但是我不能说我已经在所有情况下都对其进行了测试,但是欢迎您尝试。

public static class IsLocalExtension
{
    private const string NullIpAddress = "::1";

    public static bool IsLocal(this HttpRequest req)
    {
        var connection = req.HttpContext.Connection;
        if (connection.RemoteIpAddress.IsSet())
        {
            //We have a remote address set up
            return connection.LocalIpAddress.IsSet() 
                  //Is local is same as remote, then we are local
                ? connection.RemoteIpAddress.Equals(connection.LocalIpAddress) 
                  //else we are remote if the remote IP address is not a loopback address
                : IPAddress.IsLoopback(connection.RemoteIpAddress);
        }

        return true;
    }

    private static bool IsSet(this IPAddress address)
    {
        return address != null && address.ToString() != NullIpAddress;
    }
}

您可以使用Request属性在控制器动作中调用它,即

 public IActionResult YourAction()
 {
     var isLocal = Request.IsLocal();
     //... your code here
 }

希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET如何知道请求是否为AJAX?

来自分类Dev

如何检查 http 请求在 ASP.Net Core Web API 中是否没有查询字符串

来自分类Dev

我的asp.net mvc Web应用程序将始终检查请求是否已通过身份验证

来自分类Dev

ASP.NET CORE Checkbox如何检查为真?

来自分类Dev

检查用户是否在ASP.NET Core中登录

来自分类Dev

如何在ASP.NET Core 3.1中为每种请求启用Cors

来自分类Dev

如何检查ASP.NET Core 3.0的单元测试中是否记录了错误?

来自分类Dev

如何检查用户是否在ASP.NET Core中已通过身份验证

来自分类Dev

覆盖ASP .NET Core中的请求对象

来自分类Dev

如何在ASP .NET Core 3.1中设置请求超时

来自分类Dev

如何检查子模型状态是否有效,而不是在asp.net core中检查主模型状态?

来自分类Dev

ASP.NET Core请求本地化选项

来自分类Dev

ASP.NET Core API请求的空对象检查

来自分类Dev

Asp.Net Core中基于请求的Razor页面本地化

来自分类Dev

如何检查ID为id的输入是否为空。ASP.NET MVC

来自分类Dev

检查用户是否在asp.net mvc / angularjs中请求自己的页面

来自分类Dev

Asp.net检查HttpPostedFileBase是否为Word文档

来自分类Dev

如何将ASP.NET Core 1.0配置为使用本地IIS而不是IIS Express?

来自分类Dev

ASP.Net Core本地化

来自分类Dev

ASP.NET razor 是否在本地运行?

来自分类Dev

ASP.NET Core WebAPI中是否可以替代批处理请求(MapHttpBatchRoute)?

来自分类Dev

ASP.NET Core 3.0中的本地化

来自分类Dev

如何在ASP.NET Core的razor视图中呈现之前检查视图组件是否存在

来自分类Dev

使用javascript检查asp.net mvc中的行是否为空

来自分类Dev

Asp.net 核心身份:在 cshtml 中检查用户是否为 admin

来自分类Dev

如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

来自分类Dev

ASP.NET-Core嵌套的ASP TagHelper

来自分类Dev

重新读取ASP.NET Core中的请求正文

来自分类Dev

无法让 HTTP PUT 请求在 ASP.NET Core 中工作

Related 相关文章

  1. 1

    ASP.NET如何知道请求是否为AJAX?

  2. 2

    如何检查 http 请求在 ASP.Net Core Web API 中是否没有查询字符串

  3. 3

    我的asp.net mvc Web应用程序将始终检查请求是否已通过身份验证

  4. 4

    ASP.NET CORE Checkbox如何检查为真?

  5. 5

    检查用户是否在ASP.NET Core中登录

  6. 6

    如何在ASP.NET Core 3.1中为每种请求启用Cors

  7. 7

    如何检查ASP.NET Core 3.0的单元测试中是否记录了错误?

  8. 8

    如何检查用户是否在ASP.NET Core中已通过身份验证

  9. 9

    覆盖ASP .NET Core中的请求对象

  10. 10

    如何在ASP .NET Core 3.1中设置请求超时

  11. 11

    如何检查子模型状态是否有效,而不是在asp.net core中检查主模型状态?

  12. 12

    ASP.NET Core请求本地化选项

  13. 13

    ASP.NET Core API请求的空对象检查

  14. 14

    Asp.Net Core中基于请求的Razor页面本地化

  15. 15

    如何检查ID为id的输入是否为空。ASP.NET MVC

  16. 16

    检查用户是否在asp.net mvc / angularjs中请求自己的页面

  17. 17

    Asp.net检查HttpPostedFileBase是否为Word文档

  18. 18

    如何将ASP.NET Core 1.0配置为使用本地IIS而不是IIS Express?

  19. 19

    ASP.Net Core本地化

  20. 20

    ASP.NET razor 是否在本地运行?

  21. 21

    ASP.NET Core WebAPI中是否可以替代批处理请求(MapHttpBatchRoute)?

  22. 22

    ASP.NET Core 3.0中的本地化

  23. 23

    如何在ASP.NET Core的razor视图中呈现之前检查视图组件是否存在

  24. 24

    使用javascript检查asp.net mvc中的行是否为空

  25. 25

    Asp.net 核心身份:在 cshtml 中检查用户是否为 admin

  26. 26

    如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

  27. 27

    ASP.NET-Core嵌套的ASP TagHelper

  28. 28

    重新读取ASP.NET Core中的请求正文

  29. 29

    无法让 HTTP PUT 请求在 ASP.NET Core 中工作

热门标签

归档