常用的登录身份验证一般有:session身份验证,Cookie身份验证,Forms Authentication身份验证,前两种很简单但,此博文重点讲forms authentition身份验证,
DateTime expiration = DateTime.Now.AddDays(14); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, //指定版本号:可随意指定 "UserName",//登录用户名:对应 Web.config 中 <allow users="Admin" … /> 的 users 属性 DateTime.Now, //发布时间 expiration, //失效时间 true,//是否为持久 Cookie userTemp.Id.ToString(), FormsAuthentication.FormsCookiePath); // 不指定则默认为“/”
string str = FormsAuthentication.Encrypt(ticket); //加密身份验票 //声明一个 Cookie,名称为 Web.config 中 <forms name=".APSX" … /> 的 name 属性,对应的值为身份验票加密后的字串 HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, str); if (查询身份成功) { cookie.Expires = DateTime.Now.AddDays(14);//此句非常重要,少了的话,就算此 Cookie 在身份验票中指定为持久性 Cookie ,也只是即时型的 Cookie 关闭浏览器后就失效; } HttpContext.Current.Response.Cookies.Set(cookie); //或Response.Cookies.Add(ck);添加至客户端
这样用户的身份就会保存到客户端的浏览器中,使用的时候可以这样去取值:
int userId = ((System.Web.Security.FormsIdentity)(HttpContext.User.Identity)).Ticket.UserData.ToInt(); string userName = ((System.Web.Security.FormsIdentity)(HttpContext.User.Identity)).Ticket.Name;