После создания исключения безопасности перенаправьте на страницу входа - PullRequest
0 голосов
/ 17 сентября 2010

Я использую WebForms и Asp.Net Routing.

Когда я пытаюсь внедрить защиту в папке участников, я следую приведенным ниже инструкциям:

  private IHttpHandler GeneratePage(string VN, RequestContext RC)
  {
    string virtualPath
      = string.Format("~/Members/{0}.aspx", VN);

    if (UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath,
      RC.HttpContext.User,
      RC.HttpContext.Request.HttpMethod))
    {
      if (virtualPath != null)
      {
        return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
      }
    }
    else
    {
      throw new SecurityException();
    }

    return null;
  }
}

Однако я не просто хочу выбросить исключение безопасности, я бы хотел перенаправить на страницу входа.Я бы предпочел не жестко кодировать Response.Redirect, и я не думаю, что это так или иначе является правильным способом сделать это.

Какой «правильный» способ передать управление механизму авторизации и перенаправить на страницу входа по умолчанию?

1 Ответ

1 голос
/ 23 сентября 2010

Вы не можете иметь и то и другое.

То, что исключение завершает путь к коду.

В качестве альтернативы вы можете позвонить FormsAuthentication.RedirectToLoginPage(string extraQueryString) и передать аргумент, который позволяет вам сообщить пользователю о проблемена странице входа в систему.

например,

FormsAuthentication.RedirectToLoginPage("error=authorization-failure")

Вам, конечно, потребуется написать код на странице входа в систему, чтобы распознать это.

...