2013-11-26 4 views
0

Я использую приложение MVC по умолчанию, и я начал добавлять [Авторизовать] к определенным контроллерам, чтобы пользователи, пытающиеся получить к ним доступ, получили экран входа в систему и затем будет перенаправлен после аутентификации.Перенаправление на определенный контроллер после входа с определенной страницы

Единственное, что я не могу понять, это как это сделать для контроллеров с анонимным доступом, особенно мой HomeController. На этой странице, когда пользователь нажимает «login» и аутентифицируется, и пользователь снова перенаправляется обратно на HomeController.

То, что я хочу сделать, - это когда пользователь нажимает кнопку входа на эту страницу только для того, чтобы пользователь был отправлен на страницу входа в систему, а при успешной аутентификации они направлены на другой контроллер.

Я знаю, что макет входа находится в _LoginPartial.cshtml, но я не уверен, как и , если Это место, где вы можете добавить эту функцию.

EDIT

Я полагаю, я мог бы использовать объект ViewBag и передать в ReturnUrl на макете, а также использовать оператор @If, чтобы показать другой ActionLink. Как бы вы изменили следующее, чтобы указать returnurl?

@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" }) 
+0

вы пытались «вернуть RedirectToAction? –

+0

В AccountController есть returnURL, но я не знаю, как установить это на странице HomeController. – WhiskerBiscuit

+0

Вы используете Forms Auth? Не можете ли вы переопределить процесс аутентификации, чтобы посмотреть на реферер и перенаправить соответственно? – tucaz

ответ

0

Чтобы направить пользователя к другому действию/контроллера вы можете изменить действие «[HttpPost], LogOn» в AccountController. Например, использование:

return RedirectToAction("Index", "SomeOtherControllerName") 

Update:

Если вы хотите установить ReturnUrl конкретно, как в вашем примере, это сделано с:

@Html.ActionLink("Log in", "Login", "Account", new { returnUrl = "/Account/SomeAction" }, new { id = "loginLink" }) 
Смежные вопросы