文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何用Session保存用户状态

2023-06-17 09:17

关注

这期内容当中小编将会给大家带来有关如何用Session保存用户状态,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

网上购物已经成为现在生活不可缺少的一部分。我们上淘宝只是为了消费,今天换一个角度,用程序员的眼光看看淘宝。

如何用Session保存用户状态

如上图:

情况一:当打开一些和账户有关的网页,检测用户没有登录,系统自动会跳转到登录界面。

情况二:当检测到已经有用户登录,页面会自动跳转到目的页面。

问题:系统如何检测用户是否登录,如何保存用户的登录状态?

下面说说自己的理解:利用Session保存用户状态,

解决方案一:每个用户都有一个Session对象相对应,当用户想要跳转到任意跟账户有关的界面(已买到的宝贝页面),每个页面加载的时候都要判断Session对象保存的用户状态。

登录界面的代码:

public partial class Login : System.Web.UI.Page     {         protected void Page_Load(object sender, EventArgs e)         {         }         protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)         {             Session["UserFlag"] = false;//首先设置会话值UserFlage表示用户是否登录             if (UserVolidate(Login1.UserName, Login1.Password) == true)//调用自定义方法,验证用户是否登录成功             {                 Session["UserFlag"] = true; //登录成功                 e.Authenticated = true;                 Response.Redirect("Main.aspx"); //跳转主界面             }             else{                 Response.Write("未登录"); //否则提示未登录             }         }         /// <summary>         /// 用户登录验证         /// </summary>         /// <param name="userName">用户名</param>         /// <param name="userPassword">用户密码</param>         /// <returns>bool</returns>         private bool  UserVolidate(String userName, String userPassword)         {             //连接数据库             SqlConnection con = new SqlConnection("server=.;database=User;uid=sa;pwd=123456;");             con.Open();             SqlCommand cmd=new SqlCommand ("select * from UserInfo where UserName="+userName +" and Password="+userPassword );             int num=cmd.ExecuteNonQuery ();             if (num>0)             {                return true;             }             else            {                 return false;             }         }              }

跳转界面的代码:(防止用户通过URL直接跳转到该界面,每次界面都要进行判断)

public partial class Main : System.Web.UI.Page     {         //窗体加载         protected void Page_Load(object sender, EventArgs e)         {             //根据Session对象保存的用户登陆状态判断用户是否登录             if (Session["UserFlag"].ToString () == "false")             {                 //如果未登录,则直接跳转到登录界面                 Response.Redirect ("Login.aspx");             }         }     }

解决方案二:通过提供一个中介judge.aspx界面,每个跟账户有关的界面跳转之前都跳转到该界面,通过该界面加载的时判断用户的登录状态。

登录页面代码不变

judge.aspx页面代码:

public partial class judge : System.Web.UI.Page      {          protected void Page_Load(object sender, EventArgs e)          {              //对Session对象进行判断用户的状态               if (Session["flag"].ToString()=="false")              {                  Response.Write("未登录");              }                        }      }

跳转界面代码:

public partial class Main : System.Web.UI.Page      {          protected void Page_Load(object sender, EventArgs e)          {              //跳转页面必须经过判断,防止直接登录该页面,而不进行登录。              Server.Execute("judge.aspx");//通过执行Server对象的Execute方法          }      }

总结:两种解决方案原理相同,通过Session对象保存用户状态,不同页面都可以通过访问该用户的Session对象的会话值来判断该用户的状态。解决方案二只是简化了判断过程,通过Server对象的Execute方法先执行中介判断界面,然后回归到原程序执行顺序。

补充:

Server对象

语法:Server.Execute(path)

用途:这个方法是 IIS5.0 新增的功能,用途类似程序语言中的函数调用,也就是说,您可以在 ASP 程序中使用 Server.Execute(path)方法调用 Path 指定的 ASP 程序,待被调用的程序执行完毕之后再返回原来的程序,继续执行接下来的指令。

Session对象

在网站中,每个新访问的用户都将产生自己的session(回话)对象。这个session对象在服务器端进行管理,只能为当前访问的用户服务。如果另一个用户进入网站,也将拥有自己的session对象,两个用户的session对象即使同名,也不能共享。

上述就是小编为大家分享的如何用Session保存用户状态了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯