您现在的位置是:首页 >

校园网登录页面 Asp.net中防止用户多次登录的方法[1]

火烧 2022-02-03 21:33:13 1048
A . et中防止用户多次登录的方法[1]   在We 开发时 有的系统要求同一个用户在同一时间只能登录一次 也就是如果一个用户已经登录了 在退出之前如果再次登录的话需要报错 常见的处理方法是 在用户

Asp.net中防止用户多次登录的方法[1]  

  在Web开发时 有的系统要求同一个用户在同一时间只能登录一次 也就是如果一个用户已经登录了 在退出之前如果再次登录的话需要报错

    常见的处理方法是 在用户登录时 判断此用户是否已经在Application中存在 如果存在就报错 不存在的话就加到Application中(Application是所有Session共有的 整个web应用程序唯一的一个对象)     以下是引用片段   string strUserId = txtUser Text;  ArrayList list = Application Get( GLOBAL_USER_LIST ) as ArrayList;  if (list == null)  {  list = new ArrayList();  }  for (int i = ; i < list Count; i++)  {  if (strUserId == (list[i] as string))  {  //已经登录了 提示错误信息  lblError Text = 此用户已经登录 ;  return;  }  }  list Add(strUserId);  Application Add( GLOBAL_USER_LIST list);

  当然这里使用Cache等保存也可以

    接下来就是要在用户退出的时候将此用户从Application中去除 我们可以在Global asax的Session_End事件中处理

    以下是引用片段   void Session_End(object sender EventArgs e)  {  // 在会话结束时运行的代码   // 注意: 只有在 Web config 文件中的 sessionstate 模式设置为  // InProc 时 才会引发 Session_End 事件 如果会话模式设置为 StateServer  // 或 SQLServer 则不会引发该事件   string strUserId = Session[ SESSION_USER ] as string;  ArrayList list = Application Get( GLOBAL_USER_LIST ) as ArrayList;  if (strUserId != null && list != null)  {  list Remove(strUserId);  Application Add( GLOBAL_USER_LIST list);  }  }

    这些都没有问题 有问题的就是当用户直接点浏览器右上角的关闭按钮时就有问题了 因为直接关闭的话 并不会立即触发Session过期事件 也就是关闭浏览器后再来登录就登不进去了

校园网登录页面 Asp.net中防止用户多次登录的方法[1]

  这里有两种处理方式

   使用JavaScript方式

  在每一个页面中加入一段javascript代码

lishixinzhi/Article/program/net/201311/15531  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码