使用Webmatrix和Razor的Websecurity注销链接

使用Webmatrix和Razor的Websecurity注销链接,razor,security,webmatrix,Razor,Security,Webmatrix,我正在创建一个主要基于WebMatrix 2提供的模板的应用程序 一切都很好,尽管我在标题中创建“注销”链接时遇到了一些问题 目前我有以下链接: <a href="~/account/logout.cshtml">Sign Out</a> 但当我点击这个链接时,它什么也不做,我仍然在登录。我哪里出错了?问题是,默认情况下,注销链接是(并且应该是)经过验证的POST请求,这是为了通过将用户重定向到注销页面来防止XSS攻击将用户注销 由于此代码: if (IsPost) {

我正在创建一个主要基于WebMatrix 2提供的模板的应用程序

一切都很好,尽管我在标题中创建“注销”链接时遇到了一些问题

目前我有以下链接:

<a href="~/account/logout.cshtml">Sign Out</a>

但当我点击这个链接时,它什么也不做,我仍然在登录。我哪里出错了?

问题是,默认情况下,注销链接是(并且应该是)经过验证的POST请求,这是为了通过将用户重定向到注销页面来防止XSS攻击将用户注销

由于此代码:

if (IsPost) {
    // Verify the request was submitted by the user
    AntiForgery.Validate();
。。您需要创建一个用于注销的表单,如下所示:

<form method="post" action="~/account/logout.cshtml">
    @AntiForgery.GetHtml()
    <input type="submit" value="Logout" />
</form>

@AntiForgery.GetHtml()

当然,您可以使用JavaScript让一个普通链接提交该表单,从而使它看起来像最终用户的普通链接,只是它们受到保护

您是否有一个指向可以实现这一点的JavaScript的链接?我刚刚尝试了form menthod,它可以工作,但它会将所有格式都抛出窗口?在表单上粘贴
id
,将其隐藏在视图之外,然后执行
document.getElementById('formid').submit()。太好了,我要试一试。谢谢
<form method="post" action="~/account/logout.cshtml">
    @AntiForgery.GetHtml()
    <input type="submit" value="Logout" />
</form>