У меня есть сайт MVC 5 (основанный на nopCommerce), и мне нужно заставить всех пользователей войти в систему. То, как я это делал в прошлом на других языках, - это проверить заголовок страницы (так это на каждой странице), если пользователь вошел в систему и перенаправляется на страницу входа, если это не так. Однако я не знаю, как правильно это сделать в MVC. Другие ответы, которые я нашел, говорят, что перенаправление не является чем-то, что нужно сделать в MVC, но это не так, но я не могу понять, как правильно это выполнить. Как перенаправить всех неавторизованных пользователей на страницу входа?Принудительный вход пользователя MVC
ответ
Необходимо использовать атрибут Authorize.
О перенаправлении из MSDN:
Если неавторизованный пользователь пытается получить доступ к методу, который помечен устанавливается атрибут авторизовать, рамки MVC возвращает 401 HTTP статус кода. Если сайт настроен на использование аутентификации форм ASP.NET, код статуса 401 заставляет браузер перенаправлять пользователя на страницу входа .
Таким образом, вы можете применить редирект на ваш взгляд входа в web.config, или если вы используете проверки подлинности форм ASP.NET, то он должен переадресовать, как вы хотите на страницу входа в систему.
Существует четыре способа реализации атрибута Authorize по всему миру для каждого контроллера, для каждого метода контроллера или для каждого представления.
Глобально:
Вы можете добавить "AuthorizeAttribute" в "RegisterGlobalFilter" в App_Start, как показано ниже:
public class FilterConfig
{
public static void RegisterGlobalFilter(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
}
и Application_Start в Global.asax вы должны зарегистрировать этот фильтр:
protected void Application_Start()
{
FilterConfig.RegisterGlobalFilter(GlobalFilters.Filters);
. . .
}
На контроллер:
[Authorize]
public class AccountController : Controller
{
. . .
}
Per метод контроллера:
public class AccountController : Controller
{
. . .
[AllowAnonymous]
public ActionResult Register() { . . . }
[Authorize]
public ActionResult Manage() { . . . }
. . .
}
Per View:
<!-- With razor syntax -->
<script type="text/javascript>
@if(!Request.IsAuthenticated) {
window.location.href = redirectURL;
}
</script>
<!-- Without razor syntax -->
<script type="text/javascript>
<% if(!Request.IsAuthenticated) { %>
window.location.href = redirectURL;
<% } %>
</script>
Глобальный метод, Iraj ответ.
Если я правильно понимаю , для этого потребуется добавить '[Authorize]' к функции контроллера каждого отдельного представления, что слишком сильно для этого сайта. – vaindil
Взгляните на это: http://stackoverflow.com/a/22597699/4848267. –
вы можете добавить "AuthorizeAttribute" в "RegisterGlobalFilter" в App_Start, как показано ниже:
public class FilterConfig
{
public static void RegisterGlobalFilter(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
}
и Application_Start в Global.asax вы должны зарегистрировать этот фильтр:
protected void Application_Start()
{
FilterConfig.RegisterGlobalFilter(GlobalFilters.Filters);
.
.
.
}
и каждый контроллер, который вы не должен пользователем Registeration, вы можете использовать «AllowAnonymous» Атрибут над действиями в контроллере Как это:
[AllowAnonymous]
public ActionResult Login()
{
//do something
}
для получения дополнительной информации, пожалуйста, следовать этому Link
, если вы хотите, чтобы разрешить все контроллеры вы можете сделать это ...
положить в Application_Start в Global.asax
GlobalFilters.Filters.Add(new AuthorizeAttribute());
- 1. Принудительный вход пользователя после x min бездействия
- 2. Принудительный вход на сайт Wordpress
- 3. .htaccess пароль и принудительный вход
- 4. Принудительный вход после таймаута на Android
- 5. CakePHP - Вход для пользователя
- 6. принудительный выбор пользователя из автозаполнения
- 7. MVC Вход пользователя и сеансы связи
- 8. Принудительный вход через встроенное приложение Facebook с веб-страницы
- 9. Принудительный выход пользователя с помощью Devise
- 10. Принудительный повторный вход для oAuth2 [Office365 Rest Api]
- 11. Как сделать одиночный вход пользователя в MVC 4 applictaion
- 12. Получить текущий вход пользователя в действие контроллера в MVC 3
- 13. Как реализовать автоматический вход пользователя с помощью asp.net mvc
- 14. Как создать базовый вход пользователя с помощью asp.net-mvc?
- 15. ASP.NET MVC Вход по электронной почте вместо имени пользователя
- 16. ASP.NET MVC - Вход успеха, но возвращает идентификатор пользователя нуль
- 17. Как обойти принудительный вход для службы проверки токена?
- 18. Принудительный вход в Yammer без отображения всплывающего окна
- 19. asp.net mvc API внешний вход
- 20. Вход пользователя Io языка
- 21. Игнорировать вход пользователя
- 22. Вход пользователя с AFNetworking
- 23. Вход для хэширования пользователя
- 24. Как ограничить вход пользователя?
- 25. Вход пользователя JavaFx GUI
- 26. Вход пользователя консоли C#
- 27. JavaScript конвертировать вход пользователя
- 28. вход пользователя и fgets
- 29. Вход пользователя повторно ошибка
- 30. Вход пользователя SQL Server
проверить это. вам нужно убедиться, что вы разрешаете каждый запрос: http://stackoverflow.com/questions/27024822/adding-authorization-header-with-access-token-for-every-request-using-mvchandler –