ASP.NET中实现自动登录功能常用的方法是使用“记住我”功能,有两种实现方式:
使用Cookie保存用户信息,并设置过期时间。当用户再次打开网站时,判断Cookie是否过期,若未过期则自动登录。
在数据库中保存用户信息,每次用户登录时判断用户是否有勾选“记住我”选项。若有,则在数据库中保存一个自动登录的Token,并将Token设置为Cookie。当用户再次访问时,判断Cookie中是否有Token,若有则使用Token自动登录。
下面是第一种方式的代码示例:
protected void LoginButton_Click(object sender, EventArgs e)
{
// 用户名密码验证
if (userName == "admin" && password == "123456")
{
// 创建Cookie
HttpCookie cookie = new HttpCookie("LoginInfo");
cookie.Values.Add("UserName", userName);
cookie.Expires = DateTime.Now.AddDays(7); // 设置过期时间为7天
// 添加Cookie到Response
Response.Cookies.Add(cookie);
// 登录成功,跳转到首页
Response.Redirect("Default.aspx");
}
}
protected void Page_Load(object sender, EventArgs e)
{
// 判断Cookie是否存在
if (Request.Cookies["LoginInfo"] != null)
{
// 获取Cookie中的值
string userName = Request.Cookies["LoginInfo"]["UserName"];
// 设置自动登录状态
FormsAuthentication.SetAuthCookie(userName, false);
// 跳转到首页
Response.Redirect("Default.aspx");
}
}
在页面Load事件中判断Cookie是否存在,若存在则将用户名存入FormsAuthentication中。这样,在后续的页面访问时就可以自动登录了。