web.config Code
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="CouponHome.aspx" protection="All" timeout="30" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
login.aspx codeprotected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.txtName.Text = "[email protected]";
this.txtPwd.Text = "111111"; try
{
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value);
string q1 = ticket.Name;
if (q1 != string.Empty && Context.Request["ReturnUrl"] != null)
{
Response.Redirect(Context.Request["ReturnUrl"]);
}
}
}
catch (Exception ex)
{
throw new System.Exception(ex.Message);
}
} }........
(登陆成功后调用一个方法,设置Cookies)
public void SetUserCookies()
{
if (CheckBox1.Checked)
{
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(
1, UD.Email,
DateTime.Now,
DateTime.Now.AddYears(1),
true,
Request.UserHostAddress,
"/"); string HashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
if (Ticket.IsPersistent)
{
UserCookie.Expires = Ticket.Expiration;
}
HttpContext.Current.Response.Cookies.Add(UserCookie);
} if (Context.Request["ReturnUrl"] != null)
{
FormsAuthentication.RedirectFromLoginPage(UD.Email, false);
}
else
{
Response.Redirect(FormsAuthentication.DefaultUrl);
}
}
出现的Bug:登陆页面上,有两个TextBox,和一个CheckBox(下次记住我);填写正确的用户名和密码,不选中CheckBoX,点击登陆按钮,页面刷新一次,第二次重新输入用户名和密码,才能正常登陆;盼望高手相助,小弟在线等,在线调试,成功后,马上付分,一言既出,驷马难追,谢谢,小弟站到旁边看着去
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="CouponHome.aspx" protection="All" timeout="30" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
login.aspx codeprotected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.txtName.Text = "[email protected]";
this.txtPwd.Text = "111111"; try
{
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value);
string q1 = ticket.Name;
if (q1 != string.Empty && Context.Request["ReturnUrl"] != null)
{
Response.Redirect(Context.Request["ReturnUrl"]);
}
}
}
catch (Exception ex)
{
throw new System.Exception(ex.Message);
}
} }........
(登陆成功后调用一个方法,设置Cookies)
public void SetUserCookies()
{
if (CheckBox1.Checked)
{
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(
1, UD.Email,
DateTime.Now,
DateTime.Now.AddYears(1),
true,
Request.UserHostAddress,
"/"); string HashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
if (Ticket.IsPersistent)
{
UserCookie.Expires = Ticket.Expiration;
}
HttpContext.Current.Response.Cookies.Add(UserCookie);
} if (Context.Request["ReturnUrl"] != null)
{
FormsAuthentication.RedirectFromLoginPage(UD.Email, false);
}
else
{
Response.Redirect(FormsAuthentication.DefaultUrl);
}
}
出现的Bug:登陆页面上,有两个TextBox,和一个CheckBox(下次记住我);填写正确的用户名和密码,不选中CheckBoX,点击登陆按钮,页面刷新一次,第二次重新输入用户名和密码,才能正常登陆;盼望高手相助,小弟在线等,在线调试,成功后,马上付分,一言既出,驷马难追,谢谢,小弟站到旁边看着去
if (Context.Request["ReturnUrl"] != null)
{
FormsAuthentication.RedirectFromLoginPage(UD.Email, false);
}
else
{
Response.Redirect(FormsAuthentication.DefaultUrl);
}
在Web.config公开了 Login.aspx页的权限了,测试还是不行;谢谢您的回答
{
这儿...验证票产生的cookie是在内存中的,当你关闭页面,自动删除...你第一次登录产生cookie,第二次次执行 if(....){这里面的代码.........}
小弟不是很明白,希望您能详细的指点下小弟代码应该怎样修改;
我是这样理解的,if (Request.Cookies[FormsAuthentication.FormsCookieName] != null) 这句是写在 登陆页面的 Page_Load事件里的;当打开这个页面首先看看机器上有没有该站产生的Cookie,有的话直接到主页,跳过了登陆页;如果Request.Cookies[FormsAuthentication.FormsCookieName] == null ,那就让用户输入登陆名和密码;而问题是:首次登陆,也就是Cookie为空,并不选择“记住我”,正确的用户名和密码要登陆两次,不知道错哪里了?小弟愚钝,望大哥不吝赐教,小弟唯有以分和仰慕之情相谢
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, UD.Email, DateTime.Now, DateTime.Now.AddYears(1), false, UD.Email, FormsAuthentication.FormsCookiePath);
刚没看你怎么 new的,不好意思...你这么改下。
问题解决了,刚我自己又鼓捣鼓捣,知道自己错在那里了;2, UD.Email, DateTime.Now, DateTime.Now.AddYears(1), false,
谢谢九楼,谢谢
下面开始送分...