У нас есть сайт, созданный в .NET 3.5 с мультиплексным поставщиком членства / роли, и подключенный сайт PHP (на другом сервере), на котором используются одни и те же пользователи (или частично по крайней мере), и мы рассматриваем возможность использования единый вход, и мне интересно, если другие сделали что-то подобное, что работает.
Когда аутентификация сайта PHP завершена, он устанавливает переменную сеанса с идентификатором пользователя, а затем перенаправляет пользователя на стартовую страницу.
В будущем это означает, что пользователь всегда входит в систему на сайте ASP.NET, поэтому я попытался аутентифицироваться на сайте PHP одновременно с ASP.NET. Чтобы иметь возможность использовать пароль пользователя, я добавил логику метода ValidateUser в membershipprovider:
HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;
string data = string.Format("username={0}&password={1}", MembershipHelper.UrlEncode(username), MembershipHelper.UrlEncode(password));
req.Method = WebRequestMethods.Http.Post;
req.ContentLength = data.Length;
req.ContentType = "application/x-www-form-urlencoded";
req.AllowAutoRedirect = false;
req.CookieContainer = new CookieContainer();
StreamWriter w = new StreamWriter(req.GetRequestStream());
w.Write(data);
w.Close();
Но, как вы понимаете, это не работает. Когда я захожу на сайт php, я все еще не вошел в систему, что, конечно, как-то связано с сеансом, но я просто не могу понять, как его правильно перенести.