即使用户通过了验证,对此请求的授权也被拒绝

时间:2018-11-21 22:05:14

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

突然,此错误开始发生。 Web api方法是这样的:

    // POST api/Account/Logout
    [Route("Logout")]
    public IHttpActionResult Logout()
    {
        Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType);
        return Ok();
    }

该方法位于具有[Authorize]属性的AccountController内部。

当我刚登录时,看到一个页面也具有[Authorize](授权),我按了一个允许我注销的按钮。 “注销”按钮使用Ajax调用Web Api。

让我也告诉你,这以前曾经起作用。...突然它停止起作用了。

我已经在Startup.Auth.cs中添加了以下代码:

        var config = new System.Web.Http.HttpConfiguration();
        app.UseWebApi(config);

但是它也不起作用。我添加该行是为了以防万一,因为当我老了时,以前就行了,没有该行。

对此有任何帮助吗?

也请不要建议删除[授权]装扮,正如我在此处的其他答案中所看到的那样。 Web Api必须称为通过身份验证。

编辑:这是Ajax中的调用:

self.logout = function () {
    // Log out from the cookie based logon.
    var token = sessionStorage.getItem(tokenKey);
    var headers = {};
    if (token) {
        headers.Authorization = 'Bearer ' + token;
    }

    $.ajax({
        type: 'POST',
        url: '/api/Account/Logout',
        headers: headers
    }).done(function (data) {
        // Successfully logged out. Delete the token.
        self.user('');
        sessionStorage.removeItem(tokenKey);

        location.href = '/';
    }).fail(showError);
}

0 个答案:

没有答案