2

我创建了一个新的 MVC4 Web 项目,并且它在用户登录等情况下都能正常工作。

我在上面添加了一个 WebAPI,它将从实体框架返回数据。

我希望能够从移动应用程序登录,能够调用 API 并根据登录的用户返回结果。

我向 Account/Login 发送了一个 POST 请求,内容类型为 application/json;charset=utf-8,但是我不断收到以下错误消息:

>

所需的防伪 cookie“__RequestVerificationToken”不存在。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Web.Mvc.HttpAntiForgeryException:所需的防伪 cookie“__RequestVerificationToken”不存在。

我将如何解决这个问题?或生成防伪cookie?

我在网上看过,但这些涉及基于 asp.net 的解决方案 - 我将从 iOS / Android 发出这些请求..

谢谢。

4

2 回答 2

1

听起来您实际上并没有解决问题。WCF 身份验证服务与防伪令牌无关。防伪令牌是一种用于阻止称为跨站点请求伪造 (CSRF)的技术。在Steve Sanderson 的博客上有一个很好的解释。实现的基础是您在视图中有一个标签(请参见代码片段),然后[ValidateAntiForgeryToken]是您希望 MVC 在其上“强制”存在令牌的操作的属性:

<% using(Html.Form("UserProfile", "SubmitUpdate")) { %>
    <%= Html.AntiForgeryToken() %>
    <!-- rest of form goes here -->
<% } %>

您看到该异常的原因是您在不包括防伪令牌的情况下发布到帐户/登录。如果您尝试通过 Web API 方法处理登录/身份验证,您仍然可以使用防伪令牌。只需确保将其传递给您的视图以 POST 回 API。

于 2012-11-12T03:59:03.743 回答
0

解决了:

我改用 WCF 身份验证服务:

http://msdn.microsoft.com/en-us/library/bb398990(VS.100).aspx

于 2012-11-11T00:11:07.380 回答