Веб-приложение MVC по умолчанию не имеет ReturnUrl - PullRequest
1 голос
/ 25 марта 2011

При реализации веб-приложения MVC с FormsAuthentication может показаться, что механизм FormsAuthentication автоматически добавляет? ReturnUrl = / к вашим маршрутам mvc. Однако я заметил, что стандартное веб-приложение, которое MVC 3 предоставляет из коробки, реализует FormsAuthentication, но, похоже, не страдает от добавленной проблемы ReturnUrl = /. Я просмотрел код и не вижу, где это обрабатывается. Кто-нибудь знает?

Ответы [ 2 ]

1 голос
/ 25 марта 2011

В действии LogOn AccountController вы увидите, что при наличии обратного URL-адреса пользователь будет перенаправлен на него после успешного входа в систему:

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (MembershipService.ValidateUser(model.UserName, model.Password))
        {
            FormsService.SignIn(model.UserName, model.RememberMe);
            if (Url.IsLocalUrl(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
0 голосов
/ 20 декабря 2011

Попробуйте добавить атрибут [Authorize] к действию или контроллеру. Это создаст URL, необходимый для перенаправления после входа в систему.

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