Почему выход пользователя из системы не работает? - PullRequest
0 голосов
/ 14 мая 2018

Я хочу отключить функциональность пользователя.

Когда пользователь нажимает этот linq:

  <a tabindex="-1" href="javascript:document.getElementById('logoutForm').submit()"><i class="glyphicon glyphicon-off"></i>LogOff </a>

Это действие называется:

  [Authorize]
public class AccountController : BaseController
{
    // POST: /Account/LogOff
    [HttpPost]
    //[ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        AuthenticationManager.SignOut();
        return RedirectToAction("Index", "Home");
    }
}

Пока я изменяюЛинк выше к этому:

@Ajax.ActionLink(@Resources.Resources.LogOff, "LogOff", "Account", new { id = "logoutForm" }, new AjaxOptions { HttpMethod = "POST" })

Я получаю ошибку:

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), возможно, был удален, если его имя изменилось, или временно недоступно.Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.Запрашиваемый URL: / MySiteName / Account / LogOff / logoutForm

Есть идеи, почему не работает вторая позиция? Почему я получаю logoutForm в качестве постфикса в моем URL?

1 Ответ

0 голосов
/ 14 мая 2018

Маршрут для /MySiteName/Account/LogOff/logoutForm просто не существует.Вы передаете в маршрут параметр id со значением "logoutForm", но метод действия LogOff не принимает никаких параметров.Это также точно, что ошибка говорит вам.Вы можете убедиться в этом, посмотрев на сигнатуру вашего метода действия:

public ActionResult LogOff() {}

Как видите, он не принимает никаких параметров, поэтому URL-адрес, который вы должны вызвать, совпадает с указанным в комментарии.прямо над ним: // POST: /Account/LogOff

Это, в свою очередь, означает удаление параметров вашего маршрута, поэтому просто замените new { id = "logoutForm" } на null:

@Ajax.ActionLink(@Resources.Resources.LogOff, "LogOff", "Account", null, new AjaxOptions { HttpMethod = "POST" })

И вам следует идти вперед.

Не вижу причины, по которой сам Log Out должен быть постом.Вы не отправляете какие-либо данные на сервер.Вы можете сделать простой GET, добиться того же самого и по пути убрать некоторую несущественную сложность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...