如何在 Web Api 中访问用户身份

how to access User Identity in Web Api

我在我的 MVC 应用程序中使用网络 Api,我想在我的 api 中使用以下代码获取用户身份:

User.Identity.Name

虽然它不起作用,但它在控制器等其他地方运行良好!

是否有从 Web API 访问 User.Identity.Name 的解决方案?

这是一个常见的混淆。在 MVC 中进行身份验证对 Web Api 中的身份验证状态没有任何影响。 Web Api 是 REST-compliant,这意味着它是无状态的——没有 session。

当您在 MVC 端进行身份验证时,会将一个带有身份验证令牌的 cookie 添加到用户的浏览器,对应于应用程序 session 状态下的活动身份验证(我不是在谈论 Session 这里,因为 auth 不使用 that,但它仍在使用 sessions)。然后,在每个后续请求中,浏览器将此 cookie 传递回服务器,服务器验证身份验证令牌并恢复用户的状态 "logged in".

在 Web Api 中,none 会发生这种情况。每个对 Web Api 的请求都必须包含处理该请求所需的所有信息。不知道之前发生了什么。因此,如果您需要授权 Web Api 请求,则必须随请求一起传递一个身份验证令牌,通常在请求 headers 中。否则,您未通过身份验证并且 User.Indentity.Name 将为空,因为您是匿名的。