Я новичок в этом подходе AJAX, когда вы не должны использовать UpdatePanel
, а вместо этого используйте WebMethod
s и WebService
s.Моя основная проблема - аутентификация.
Когда страница открыта или создан запрос обратной передачи, все работает нормально.Аутентификация прошла правильно, и я могу получить доступ к Thread.CurrentPrincipal.Identity
и получить оттуда свой объект идентификации пользователя.
Однако это меняется, когда я пытаюсь вызвать WebMethod
на своей странице.Вызов правильно передается на сервер, и все, кажется, работает нормально, пока я не попытаюсь получить идентификацию пользователя из потока.Тогда я получаю только Anonymous
пользователя вместо реального.Включение сеанса на веб-методе, похоже, не очень помогло.
Есть идеи, что может вызвать эту проблему и как ее решить?Кто-то упомянул, что файл cookie для аутентификации должен передаваться вместе с запросом, но как мне это сделать?
Любая помощь будет принята.
Редактировать:
Некоторыеуточнение и код:
Мое заявление написано в стандарте asp.net
.После более глубокого исследования унаследованного кода я обнаружил, что все аутентификации выполняются в некотором базовом классе, который наследуют все другие страницы.Каждый раз, когда страница загружается, пользовательские субъекты получают из HttpContext.Current.Session("...")
.Я думаю, что это далеко не хорошее решение, но мне нужно придерживаться его прямо сейчас.Проблема была в том, что WebMethod
не запускает весь жизненный цикл страницы, так как static
.Я исправил это прямо сейчас, вызвав метод, который получает пользовательские данные из сеанса.
Я хотел бы получить некоторые идеи, как это может быть создано правильно и какие проблемы могут возникнуть в результате аутентификации на основе сеанса.
PageMethods.SomeMethod(parameter, SuccessDelegate, FailureDelegate);
Вот как я сейчас звоню WebMethods
.Я предполагаю, что он проходит все необходимые куки, я прав?