Я использую метод аутентификации формы в ASP.Net, и проблема в том, что он защищает только файлы «.aspx». Я пытаюсь защитить файлы « .php» в папке «kcfinder» от не прошедших проверку пользователей.ASP.NET как получить доступ к User.Identity.IsAuthenticated в Aplication Request module?
Я выполнил этот класс в папке «App_Code».
public class KCChecker
{
public static void Process(HttpApplication Application)
{
HttpRequest Request = Application.Context.Request;
HttpResponse Response = Application.Context.Response;
string url = Request.Path.ToLower();
if (url.IndexOf("/kcfinder/") == 0 && !HttpContext.Current.User.Identity.IsAuthenticated)
{
Response.Redirect("/");
}
}
}
Проблема заключается в том, что он всегда говорит: «Ссылка на объект не установлена в экземпляр объекта». на HttpContext.Current.User.Identity.IsAuthenticated
. Я попытался изменить его на Application.Context.User.Identity.IsAuthenticated
, но он по-прежнему показывает ту же ошибку.
Можно ли каким-либо образом получить доступ к объекту пользователя в функции процесса этого настраиваемого модуля?
Отказ от ответственности - я не имею опыт ведения PHP под IIS. Тем не менее, IIS имеет определенные типы, настроенные для обработки Asp.Net, и я не ожидал, что php будет обработан Asp.Net, поэтому Context будет null. – Michael
Контекст не равен нулю. Запрос и ответ Контекстного объекта все работают. ТОЛЬКО Request.User имеет значение null. –
Итак, что возвращает Request.IsAuthenticated return - true/false? Может быть, у вас включен анонимный доступ? Также я [нашел] (http://forums.asp.net/t/1689878.aspx/1) this: runAllManagedModulesForAllRequests = "true" – Michael