如何让 asp.net 身份注销正常工作?

How to get asp.net identity logout to work?

我决定第一次在我的站点中使用 asp.net 身份。我正在尝试从我的角度创建一个简单的注销 link。单击 link 时出现错误 "Server Error in '/' Application. Requested URL: /Account/Logout"。在这一点上,在我看来,代码是正确的,但显然有些地方是错误的。任何帮助将不胜感激。

控制器:

// POST: /Account/Logout
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logout()
{
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie, DefaultAuthenticationTypes.ExternalCookie);
    Session.Abandon();
    return RedirectToAction("Login", "Account");
}

索引视图:

<div id="sidebar-nav" class="sidebar">
    <div class="sidebar-scroll">
        <nav>
            <ul class="nav">
                <li><a href="@Url.Action("Index", "Home")" class="active"><i class="lnr lnr-home"></i> <span>Dashboard</span></a></li>
                <li>
                    <a href="#subPages" data-toggle="collapse" class="collapsed"><i class="lnr lnr-file-empty"></i> <span>Reports</span> <i class="icon-submenu lnr lnr-chevron-left"></i></a>
                    <div id="subPages" class="collapse ">
                        <ul class="nav">
                            <li><a href="@Url.Action("Index", "Home")" class="">Fulfillment</a></li>
                            <li><a href="@Url.Action("Index", "Home")" class="">Report</a></li>
                            <li><a href="@Url.Action("Index", "Home")" class="">Report</a></li>
                        </ul>
                    </div>
                </li>
                <li><a href="@Url.Action("Logout", "Account")" class=""><i class="lnr lnr-dice"></i> <span>Logout</span></a></li>
            </ul>
        </nav>
    </div>
</div>

当在索引视图中单击注销 link 时 returns 出现上述错误。

预期结果是 link 调用控制器中的注销方法并重定向到登录页面。

由于您是通过单击访问 link,因此您应该使用 [HttpGet] 而不是 [HttpPost] 来指定您的端点,因为这是您请求的类型制作.

您还应该将防伪令牌添加到您的网站,因为您正在通过使用 [ValidateAntiForgeryToken] 的方法来验证它(适用于 POST 请求)

如果您不想这样做(或者当您发出 GET 请求时),请删除注释 否则将以下内容添加到您的表单中以生成一个:

@Html.AntiForgeryToken()

这反过来将呈现类似于以下内容的输入:

<input name="__RequestVerificationToken" type="hidden" value="CfDJ8NrAkS ... s2-m9Yw">

阅读更多关于防伪令牌的信息here