转 asp.net 单用户登录经典解决方案
今天要做好一点的登陆框结果就想做个全局的判断是否用户所以找了一下文章
这里指的单点,泛指在WEB服务端,一个账户同一时刻只能存在一个票据!
大家开发中可能都碰到的一个问题,怎么使同一个用户,在同一时间内只允许登录一次。
很多人都会想到在数据库中用一个标识字段,登录进去置1,退出置0,登录时判断这个字段,如果是1就说明此用户在线,不允许登录,这个方案看似有效,但在实际使用中发现问题很多,比如,用户不是通过程序中的退出按纽退出,而是直接关闭IE,这样的话,下次登录时数据库里此用户还在线呢,这个用户就无法登录,当然也有一些办法可以解决这个问题:增加一个定时作业,定期复位那些长时间在线的用户,这样又会造成一些问题,如果这个用户实际上就是使用了这么长时间,那就是误杀。
通过多次实验,发现.net本身可以提供这种解决方案。步骤如下:
第一:建立global.asax文件, Session_End 事件中写入如下代码:
Hashtable h = (Hashtable)Application["online"];
if (h[Session.SessionID] != null)
h.Remove(Session.SessionID);
Application["online"] = h;
第二:修改web.config文件,在system.web 结点里面增加
<sessionState mode="InProc"></sessionState>
这个是为了使用global.asax中的session_end事件生效。
第三:页面的登录事件中,判断登录用户是否在服务端全局变量中存在,存在就不允许登录,不存在就创建。以下是实现过程,登录按纽的事件中调用。
private void isLogin()
{
Hashtable h = (Hashtable)Application["online"];
if (h == null)
{
h = new Hashtable();
}
/
相关文档:
方法一:使用InitParameters
传递参数页面:
传递一个参数
string url = "index.aspx?UserID=" +userId;
//最大化
string refUrl = "<Script>window.self.open('" + url + "', '', 'fullscreen=yes,scrollbar=no,toolba ......
对于asp.net程序,我们应该尽可能的提供一个便捷的用户接口,减少页面回传就是其中之一。
本文演示一次上传多个文件的方法,在客户端可以随意控制上传文件的个数,但是注意总文件大小不能过大,否则会有异常抛出。至于解决大文件上传的方法已经超出本文的讨论范围。
<注:大附件办法>
<
<configuration> ......
ASP.NET中前台javascript与后台代码调用
2010-03-31 10:01
.net中C#代码与javaScript函数的相互调用问题。
问:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
问题1答案如下:
javaScript函 ......
验证码控件WebValidates的使用步骤如下:
1. 将验证码控件放入工具箱。(直接拖动DLL放到工具箱即可)
2. 拖放控件到页面相应位置。
3. 页面初始化时,编程生成验证码(假设验证码控件ID为snCode)。
snCode.Create();//首次加载生成新验证码
4. 编码对比用户的输入(假设用户输入验证码的文本框ID是txtCode ......
方法一 :使用XML控件
<% @ Page Language="C#"%>
<html>
<body>
<h3><font face="Verdana">读取XML方法一</font></h3>
<from runat=server>
<asp:Xml id="xml1" DocumentSource="grade.xml" runat="server" />
</from>
</body>
</ ......