在 Asp.Net WebApi Core 2.0 中获取客户端的唯一标识符?
Get unique identifier of client in Asp.Net WebApi Core 2.0?
我正在寻找 WebApi Core 2.0 中客户端的唯一标识符
我测试了HttpContext.Connection.Id
,所有浏览器都一样!
[HttpGet]
public IActionResult GetConnectionId()
{
return Ok(new
{
ConnectionId = HttpContext.Connection.Id
});
}
我也是用虚拟机测试的,所有客户端都一样
如何在 Asp.Net WebApi Core 2 中获取客户端的唯一标识符?
没有 "unique identifier for a client" 这样的东西。 HTTP 是无状态的。 HTTP协议其实就是故意这样设计的。无论过去的通信如何,任何客户端都应该能够与任何服务器通信。这支持负载平衡、故障转移等概念。
诸如会话、cookie 等的东西已经在 HTTP 协议之上分层以启用一种状态形式,但它们不是协议的真正特征,而是服务器和客户端之间的合作成果.客户端和服务器都必须参与使状态得以实现的过程。尤其是 Cookie,它使 Google、Facebook 等公司能够从一个站点到另一个站点跟踪用户。但是,正如您正确指出的那样,cookie 与基于 REST 的 API 不兼容。
因此,您唯一的选择就是身份验证。通过强制客户端进行身份验证,您可以准确地知道客户端的身份并跟踪该客户端的活动。别无他法。无法访问 MAC 地址等客户端详细信息,因为您只能访问客户端选择共享的内容,而那不是其中之一。即使是,它也可以被操纵。 IP 地址曾经在某种程度上具有识别性,但在这个 WAP、代理、VPN 等时代,一个 IP 可以被任意数量的唯一客户端使用。同样,IP 地址也可以被欺骗,因此即使您可以通过 IP 识别客户端,也不能确保您真正与该客户端打交道。
您可以选择多种形式的身份验证。 JWT(JavaScript Web Tokens)现在很流行,但您可以轻松地使用客户端身份验证、证书身份验证、OAuth、OpenID 等。要点是简单地强制客户端以某种形式进行身份验证。只有这样你才能识别客户端。
我正在寻找 WebApi Core 2.0 中客户端的唯一标识符
我测试了HttpContext.Connection.Id
,所有浏览器都一样!
[HttpGet]
public IActionResult GetConnectionId()
{
return Ok(new
{
ConnectionId = HttpContext.Connection.Id
});
}
我也是用虚拟机测试的,所有客户端都一样
如何在 Asp.Net WebApi Core 2 中获取客户端的唯一标识符?
没有 "unique identifier for a client" 这样的东西。 HTTP 是无状态的。 HTTP协议其实就是故意这样设计的。无论过去的通信如何,任何客户端都应该能够与任何服务器通信。这支持负载平衡、故障转移等概念。
诸如会话、cookie 等的东西已经在 HTTP 协议之上分层以启用一种状态形式,但它们不是协议的真正特征,而是服务器和客户端之间的合作成果.客户端和服务器都必须参与使状态得以实现的过程。尤其是 Cookie,它使 Google、Facebook 等公司能够从一个站点到另一个站点跟踪用户。但是,正如您正确指出的那样,cookie 与基于 REST 的 API 不兼容。
因此,您唯一的选择就是身份验证。通过强制客户端进行身份验证,您可以准确地知道客户端的身份并跟踪该客户端的活动。别无他法。无法访问 MAC 地址等客户端详细信息,因为您只能访问客户端选择共享的内容,而那不是其中之一。即使是,它也可以被操纵。 IP 地址曾经在某种程度上具有识别性,但在这个 WAP、代理、VPN 等时代,一个 IP 可以被任意数量的唯一客户端使用。同样,IP 地址也可以被欺骗,因此即使您可以通过 IP 识别客户端,也不能确保您真正与该客户端打交道。
您可以选择多种形式的身份验证。 JWT(JavaScript Web Tokens)现在很流行,但您可以轻松地使用客户端身份验证、证书身份验证、OAuth、OpenID 等。要点是简单地强制客户端以某种形式进行身份验证。只有这样你才能识别客户端。