使用COOKIE对像实现保存用户基本信息(结合Session),ASP.Net实现用户登录全过程
1.创建一个WEB用户控件页面
。添加两个HTml 客户端DIV 并专为服务控件 前台代码如下
<div id="divLogin" runat="server"> ……</div>
<div id="divMain" runat="server" > ……</div>
。在div divLogin 中添加 Label(用户名) textBox(用户名) Label( 密码) textBOx(密码) Checkbox(记住我) button(登入)
。在div DivMain 中 添加 Label(HI,) Label(XXX)
2.WEB用户控件的后台代码实现
protected void Page_Load(object sender, EventArgs e)
{
//判断是否有Cookie信息可读
if (Request.Cookies.Get("loginUserName") != null)
{
//将Cookie中的登录信息读取出来保存到Session["loginUser"]中
Session["loginUser"] = Request.Cookies["loginUserName"].Value;
}
//通过判断Session["loginUser"]的值是否为空位判断是否登陆过,以及显示哪一个Div
if (Session["loginUser"] == null)
{
this.divLogin.Visible = true;
this.divMain.Visible = false;
}
else
{
this.divLogin.Visible = false;
this.divLoginMain.Visible = true;
this.lblUserMessage.Text = Session["loginUser"].ToString();
}
}
protected void btnLogin_Click(object sender, EventArgs e) //登录按钮Click事件
{
//保存登陆信息到Session["loginUser"]
if (ValidateUser(this.txtID.Text, this.txtPWD.Text))
{
Session["loginUser"] = this.txtID.Text;
//如果选择了保存Cookie
if (this.chkIsSaveCookie.Checked)
{
HttpCookie cookie = new HttpCookie("loginUserName",this.txtID.Text);
cookie.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(cookie);
}
}
//刷新当前页面
Response.Redirect(Request.Url.ToString());
}
/// <summary>
/// 这里省略了访问数据库验证的过程
/// </summary>
/// <param name="id">登陆账号</param>
/// <param name="pwd">登陆密码</param>
/// <returns></returns>
public bool ValidateUser(string id, string pwd) //该方法用于数据验证,此处略
{
return true;
}
protected void btnSafeExit_Click(object sender, EventArgs e) //安全退出按钮Click事件
{
//清空Session中的用户信息
Session["loginUser"] = null;
//将本地Cookie中的信息移除----让Cookie过期
HttpCookie cookie = Request.Cookies["loginUserName"];
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Add(cookie);
}
//刷新当前页面
Response.Redirect(Request.Url.ToString());
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!