Вот что у меня есть :
- Веб-приложение ASP.NET 4.0
- Аутентификация с помощью форм (на основе файлов cookie)
Вот что я пытаюсь сделать :
- Интеграция с Facebook Connect (с помощью API JavaScript и графика)
- Предоставьте услугу единого входа для моих пользователей (автоматический вход пользователей, если они вошли в систему и подключились к Facebook)
На каждой странице есть элемент управления, который показывает анонимных / зарегистрированныхв сведениях о пользователе.
Вот проблема: На Page_PreRender
этого пользовательского элемента управления (который находится на каждой странице, поэтому считаю, что это событие выполняется при каждом отдельном запросе страницы), я пытаюсьавтоматическая регистрация на основе статуса аутентификации Facebook (JavaScript API - Cookies).
Если вход выполнен успешно, я регистрируюсь с помощью FormsAuthentication.SetAuthCookie
.
Это все работаетхорошо.
Однако, сразу после того, как я делаю единый вход (буквально на следующей строке), мне нужновынести анонимный материал (пожалуйста, войдите в систему) или аутентифицированный пользовательский материал (отображаемое имя и т. д.).Проблема в том, что пользователь еще не прошел аутентификацию на моем сайте.Для «аутентификации» на моем сайте я делаю стандартные вещи (проверьте свойство HttpContext.User.Identity.IsAuthenticated
).
Я думаю, что он еще не установлен на "true
", потому что cookie-файл Forms Auth был создан, но в ответе HttpContext.User.Identity.IsAuthenticated
основан на запросе в данный момент времени - я прав?там?
Так, конечно, он показывает анонимные данные, даже если пользователь вошел в систему.
Когда я обновляю страницу, конечно, отображаются правильные данные пользователя.
Так что это почти проблема синхронизации. Как я могу автоматически войти в систему пользователя (через FormsAuthentication.SetAuthCookie
), гарантируя, что HttpContext.User.Identity.IsAuthenticated
истинно?
Может быть, я делаю аутентификацию / единый вход вне то место?
Или мне нужно почти сделать Response.Redirect
для себя, чтобы обновить куки в HTTP-запросе?
Как вы все знаете, документация для Facebook Connectразбросаны и минимальны, так что все дело в том, чтобы соединить все воедино.
Любая помощь будет оценена ... ура!