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

时间:2015-02-25 17:14:34

标签: c# asp.net-mvc asp.net-web-api asp.net-web-api2

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

User.Identity.Name

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

是否有任何解决方案可以从Web API访问User.Identity.Name?

1 个答案:

答案 0 :(得分:9)

这是一种常见的混淆。在MVC中进行身份验证对Web Api中的身份验证状态没有任何作用。 Web Api符合REST,其中包括无状态 - 无会话。

当您在MVC端进行身份验证时,会在用户的浏览器中添加一个cookie,其中包含一个身份验证令牌,对应于应用程序会话状态中的主动身份验证(我不是在谈论Session此处,由于auth不使用 ,但它仍在使用会话)。然后,在每个后续请求中,浏览器将此cookie传递回服务器,该服务器验证身份验证令牌并恢复用户的状态"登录"。

在Web Api中,没有发生这种情况。对Web Api的每个请求都必须包含处理该请求所需的所有信息。什么都不知道。因此,如果您需要授权Web Api请求,则必须在请求标头中传递身份验证令牌以及请求。否则,您未经过身份验证,并且User.Indentity.Name将为null,因为您是匿名的。