我正在尝试从本地主机上的一个网站导航到本地主机上的第二个网站。
这两个网站都有自己的会员提供商。我正在尝试使用来自站点 #1 的 FormsAuthorizationTicket 将用户 SSO 到站点 #2。
目前我收到此错误: System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed
到目前为止,我采取的步骤包括: 将元素设置为特定的密钥值 将验证和加密的 machineKey 属性设置为“3DES” 通过记录验证加密票证在 #2 网站中的值与在排名第一的网站。
我的代码在这里:
*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");*
如果有人有帮助的想法,我会很乐意尝试。