У меня есть пользователи, которые заходят на мой сайт через Facebook. Они отправляются с моего сайта в Facebook, а затем перенаправляются обратно после разрешения сайта. Проблема, с которой я сталкиваюсь, - это доступ к переменным Session, которые я установил до того, как они покинули сайт. Когда пользователь возвращается на сайт, создается совершенно новый сеанс. Странно то, что если пользователь перемещается по сайту, некоторые страницы исходного сеанса будут доступны, а иногда и вновь созданный сеанс.
Я пытался создать куки:
Response.Cookies ["user"] ["LoggedIn"] = "true";
Пока пользователь не покинул сайт, я в состоянии получить доступ к этим файлам cookie, но как только они уходят и возвращаются, я, похоже, тоже не могу получить к ним доступ. Итак, мой вопрос: каков наилучший способ сохранить данные до того, как пользователь будет удален с сайта, до того момента, когда он будет перенаправлен обратно?
AccountController:
public void Login()
{
Session["BeforeLogin"] = "foo";
redirect(FacebookUrl);
}
//Where Facebook redirects the user back to
public ActionResult OAuth(string code, string state)
{
if (LoginSuccessful)
{
Session["LoggedIn"] = true;
}
return View();
}
HomeController:
public HomeController()
{
setLoggedInSession();
}
public void setLoggedInSession()
{
//This is where I'm having the inconsistency
string foo = Session["BeforeLogin"];
ViewData["LoggedIn"] = Session["LoggedIn"];
//It'll either be BeforeLogin is null and LoggedIn is true
//or BeforeLogin will be "foo" and LoggedIn will be null
}
EDIT:
Некоторая новая информация об этой проблеме. Проведя некоторое тестирование, я обнаружил, что сессия, кажется, работает нормально, когда я использую только один экземпляр. Когда я делаю высокую доступность, хотя (работает 5 экземпляров), когда я начинаю испытывать проблемы. Наиболее заметно в IE. Моя гипотеза заключается в том, что когда вы перенаправляетесь обратно на сайт из Facebook, вы получаете экземпляр, отличный от того, который вы оставили, и он создает новый сеанс, прежде чем ему удастся восстановить исходный.