Я пытаюсь перейти с одного веб-сайта на моем локальном хосте на второй веб-сайт на моем локальном хосте.
У обоих сайтов есть свой провайдер членства. Я пытаюсь использовать FormsAuthorizationTicket с сайта № 1 для единого входа пользователя на сайт № 2.
В настоящее время я получаю эту ошибку:
System.Security.Cryptography.CryptographicException: заполнение недопустимо и не может быть удалено
Шаги, которые я предпринял до этого момента, включают:
Установка элемента для определенных значений ключа
Установите атрибуты machineKey проверки и шифрования на «3DES»
Посредством регистрации подтвердил, что зашифрованный билет имеет то же значение на веб-сайте № 2, что и на веб-сайте № 1.
Мой код здесь:
*FormsAuthentication.Initialize();
FormsAuthenticationTicket newTicket = new
FormsAuthenticationTicket(1 // Ticket Version
, Login1.UserName // User Name
, DateTime.Now // Creation Date
, DateTime.Now.AddDays(1) // Expiration Date
, true // Is Persistant
, Login1.UserName); // This should be a list of Roles
string strEncyptedTicket = FormsAuthentication.Encrypt(newTicket);
HttpCookie myCookie = new HttpCookie("cryptCookie", strEncyptedTicket);
myCookie.Values.Add("username", Login1.UserName);
myCookie.Values.Add("cryptTick", strEncyptedTicket);
Response.Cookies.Add(myCookie);*
На веб-сайте № 2 я создал целевую страницу для проверки заявки и перенаправления на страницу только для участников. Во время расшифровки происходит, когда я получаю ошибку, указанную выше.
Вот код моей целевой страницы на сайте №2:
*FormsAuthenticationTicket fat2 = FormsAuthentication.Decrypt(Request.Cookies["cryptCookie"].Values["cryptTick"]);
MembershipUser mu = Membership.GetUser(Request.Cookies["cryptCookie"].Values["username"]);
if (mu == null)
{
lblInfo.Text += "member not found";
return;
}
Response.Redirect(@"~\MemberPages\MemberPage.aspx");*
Если у кого-нибудь возникнет идея помочь, я с удовольствием попробую.