如何手动创建身份验证cookie而不是默认方法?

使用FormsAuthentication我们编写如下代码:


 if (IsValidUser())

 {

      FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

      FormsAuthentication.RedirectFromLoginPage(userName, createPersistentCookie); 

 }

如何手动创建身份验证cookie而不是编写FormsAuthentication.SetAuthCookie(userName, createPersistentCookie)?


如何将登录页面中的重定向URL存储在字符串变量中而不是编写FormsAuthentication.RedirectFromLoginPage(userName, createPersistentCookie)?


米脂
浏览 541回答 3
3回答

慕码人2483693

回答有关为此帖子 投下反对票的最新信息,创建具有用户信息的cookie的方法如下,登录页面页面加载时的Cookie验证,if (HttpContext.Current.User.Identity.IsAuthenticated)经过身份验证的用户登录期间创建Cookie, FormsAuthentication.SetAuthCookie(txtUserName.Text.Trim(), true); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(    1,    txtUserName.Text.Trim(),     DateTime.Now,   (chkRemember.Checked) ? DateTime.Now.AddHours(6) : DateTime.Now.AddHours(2),// Specify timelimit as required   true,   string.Empty,                                                   FormsAuthentication.FormsCookiePath);  string encryptedTicket = FormsAuthentication.Encrypt(ticket);HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);cookie.Expires = (chkRemember.Checked) ? DateTime.Now.AddHours(6) : DateTime.Now.AddHours(2);cookie.HttpOnly = true;Response.Cookies.Add(cookie);以下是投反对票的答案 -在Cookie中添加加密密码的原因。另一种创建cookie的方式,HttpCookie toolCookie = new HttpCookie("xyz");toolCookie["UserName"] = userName;toolCookie["Password"] = StringCipher.Encrypt(password, "#!");toolCookie.Expires = DateTime.Now.AddMinutes(chkRemember.Checked ? 30 : -30);Request.Cookies.Add(toolCookie);参考获取现有的Cookie详细信息HttpCookie user = Request.Cookies["xyz"];if(user != null) {  string username = user["UserName"];  string password = user["Password"] != null ? StringCipher.Decrypt(user["Password"], "#!") }这里的数据安全性是一个静态类。加密和解密功能加密和解密

ABOUTYOU

这是很大的帮助。我要做的唯一更改是从web.config获取expiryDate超时时间。将DateTime.Now.AddMinutes(30)更改为DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes)
打开App,查看更多内容
随时随地看视频慕课网APP