问题描述
在login页面:SaveCookie(FormsAuthentication.GetAuthCookie(model.UserName,false),90)publicstaticvoidSaveCookie(HttpCookiecookie,intexpireDays){stringcookieDomain="";stringcurrentURL=HttpContext.Current.Request.Url.AbsoluteUri;RegexmatchNotTLD=newRegex("[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)+$",RegexOptions.Compiled|RegexOptions.IgnoreCase);if((matchNotTLD.IsMatch(cookieDomain))&&(currentURL.IndexOf(cookieDomain)>-1)){cookie.Path="/";cookie.Domain=cookieDomain;}cookie.Expires=DateTime.Now.AddDays(expireDays);HttpContext.Current.Response.Cookies.Add(cookie);}在HttpModule:IHttpModule中获取cookieif(HttpContext.Current.User!=null&&HttpContext.Current.User.Identity.IsAuthenticated){HttpContext.Current.User.Identity.Name;......}在本机用visual2008调试时,HttpContext.Current.User.Identity.Name隔天都可以获取用户信息,但是发布到服务器空间时,过几十分钟后就获取不到了,必须重新登录。
解决方案
解决方案二:
Add调用完了再调用Set,多试试呢,馊主意
解决方案三:
使用Cookie实现密码记忆功能示例<asp:CheckBoxID="ckbauto"runat="server"Text="记住密码"/>//前台设置是否记住密码protectedvoidButton1_Click(objectsender,EventArgse)//cs页面设置记忆功能{if(txtname.Text.Trim().Equals("mr")&&txtpwd.Text.Trim().Equals("mrsoft")){Session["username"]=txtname.Text.Trim();if(ckbauto.Checked){if(Request.Cookies["username"]==null){Response.Cookies["username"].Expires=DateTime.Now.AddDays(30);Response.Cookies["userpwd"].Expires=DateTime.Now.AddDays(30);Response.Cookies["username"].Value=txtname.Text.Trim();Response.Cookies["userpwd"].Value=txtpwd.Text.Trim();}}//codego.net/15/1/1/Response.Redirect("admin.aspx");}else{ClientScript.RegisterStartupScript(this.GetType(),"","alert('用户名或密码错误!');",true);}}
解决方案四:
参考记住密码功能就行了,就写入cookie就行了