我创建了一个新的MVC4 Web项目,并且所有这些项目都可以正常使用用户登录等。
我在其上添加了一个WebAPI,它将从Entity Framework返回数据。
我希望能够从移动应用登录,能够调用API并根据登录用户返回结果。
我发送了一个POST请求到Account / Login,内容类型为application / json; charset = utf-8,但是我不断收到以下错误消息:
>
不存在所需的防伪cookie“__RequestVerificationToken”。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Web.Mvc.HttpAntiForgeryException:不存在所需的防伪cookie“__RequestVerificationToken”。
我该如何解决这个问题?或生成防伪cookie?
我在网上看过,但这些涉及基于asp.net的解决方案 - 我将从iOS / Android发出这些请求。
感谢。
答案 0 :(得分:1)
听起来你并没有真正解决问题; WCF身份验证服务与防伪令牌无关。防伪令牌是一种用于阻止称为跨站请求伪造(CSRF)的技术。在Steve Sanderson's blog上有一个很好的解释。实现基础是您在视图中有一个标记(请参阅代码段),然后在您希望MVC“强制执行”令牌存在的操作上使用属性[ValidateAntiForgeryToken]
:
<% using(Html.Form("UserProfile", "SubmitUpdate")) { %>
<%= Html.AntiForgeryToken() %>
<!-- rest of form goes here -->
<% } %>
您看到该例外的原因是您在没有包含防伪令牌的情况下发布到帐户/登录。如果您尝试通过Web API方法处理登录/身份验证,仍可以使用防伪标记。只需确保pass it to your view将POST回到API。
答案 1 :(得分:0)