常用的登录身份验证一般有: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;

 

posted on 2017-08-21 09:15  日月草方  阅读(930)  评论(0编辑  收藏  举报