Я бы хотел, чтобы мое MVC-приложение проверяло (при каждом запросе), есть ли у текущего пользователя профиль. Если профиль не найден, я хочу перенаправить его на страницу «профиля», чтобы он отправил его.
protected void Application_AuthenticateRequest()
{
if (HttpContext.Current.User != null)
{
// Redirect to profile page if the current user does not have a profile
if (!HttpContext.Current.User.HasProfile())
Response.RedirectToRoute("Profile");
}
}
Я расширил IPrincipal, включив в него метод "User.HasProfile ()", чтобы проверить, есть ли у пользователя профиль. Это работает, , но проблема в том, что Application_AuthenticateRequest вызывается для каждого отдельного запроса, включая javascript, css и т.д ...
Кроме того, он создает цикл перенаправления, когда я пытаюсь выполнить Response.RedirectToRoute ("Профиль").
Единственный способ, который я нашел для этого, - добавить следующее в мое выражение IF перед перенаправлением на страницу профиля:
!HttpContext.Current.User.HasProfile() && Request.Path != "/system/profile" && !Request.Path.Contains(".")
Он проверяет, является ли текущий путь страницей профиля (для предотвращения цикла перенаправления) и есть ли в URL период (чтобы позволить ресурсам javascript и css продолжать загружаться). Есть ли лучший способ? Как вы, ребята, справляетесь с этим?