asp.net 用户的登出

cuinan_6 2010-09-26 11:12:26
现在我想要做的是,我又一个登出的按钮,我点击登出,从session 中取出我登录时,在session 中保存的用户,之后改变数据库中,改用户的状态时登出状态, 如果用户并没有直接点登出而是直接关闭浏览器,我怎么样才能改变数据库中该用户的状态。
...全文
338 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-09-26
  • 打赏
  • 举报
回复
Session.RemoveAll();
Session.Abandon();
FormsAuthentication.SignOut();
修改数据库中登录状态
ajax轮询查询用户状态
beg200710 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 misswangjinfeng 的回复:]
//单人登入,即时登出
//首先设置web.config文件;
<sessionState mode="StateServer" cookieless="false" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" t……
[/Quote]

yuxh81 2010-09-26
  • 打赏
  • 举报
回复
通过Global.asax文件中的Session_End事件监测,不过要等到会话超时才会触发

估计(我也没弄过)也可以定时向服务器发送信息(包含用户名和时间),表示客户仍在使用
然后服务器定时清理最近没有收到消息的用户
misswangjinfeng 2010-09-26
  • 打赏
  • 举报
回复
//单人登入,即时登出
//首先设置web.config文件;
<sessionState mode="StateServer" cookieless="false" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" timeout="1"/>

//然后在登入事件中加入;

///同一时间点,检查登录用户ID的唯一性

///</summary>

///<param name="strZh">用户ID </param>

///<returns></returns>

private bool ckeckUserOnlyOne(string strZh)

{

string strTempZh=strZh;

if (Cache[strZh] == null)

{

TimeSpan SessTimeout = new TimeSpan(0,0,System.Web.HttpContext.Current.Session.Timeout,0,0);

HttpContext.Current.Cache.Insert(strTempZh,strTempZh,null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null);

return true;

}

else

return false;

}

//复制代码
//然后在登出事件加入;


try

{

Session.Abandon();

System.Web.HttpContext.Current.Session.RemoveAll();

Cache.Remove("用户ID");

}

catch (Exception ex)

{ }

//复制代码
//主角登场了,在每个页面引入下面的JS;


<script>

var step=0;

function myRefresh()

{

var httpRequest = new ActiveXObject("microsoft.xmlhttp");

httpRequest.open("GET", "delSession.aspx", false);

httpRequest.send(null);

step ++;

if(step <2)//注意2

{

setTimeout("myRefresh()",30*1000); //30秒

}

}

myRefresh();

</script>
//项目的Root目录下new一个delSession.aspx文件,然后在她的page_laod方法中写上Response.Expires = -1;


无爱大叔 2010-09-26
  • 打赏
  • 举报
回复
点关闭窗口的时候,可以触发事件(js事件)onbeforeunload,用js ajax异步去调用登出的相关操作;此方法无法捕获突然停电等特殊因素。
在用户登录的时候可以考虑使用application来存储每个登录用户的session,用ajax心跳检测某用户是否已经登出。

考虑的不甚周全,期待高手解答!
cuinan_6 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 woainikeaibibi 的回复:]
引用 4 楼 cuinan_6 的回复:
没有好的办法嘛! 那么多的网站登出 是怎么做到的,我只是想在 用户在登录状态下,并没有登出,但是他已经关闭了浏览器,那么我的数据库中的数据显示仍然是 登录状态。这不是没有意义了嘛。

我想你的意思是不是比如说:我刚注册个账号:aaa,登录过后进入页面,在数据库中aaa是已登录,而你有个登出按钮,点击的时候把aaa登录状态该成已登出,但是用户是直接关闭……
[/Quote]

对就是这个意思
cuinan_6 2010-09-26
  • 打赏
  • 举报
回复
谢谢,了解了!
七爷 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cuinan_6 的回复:]
没有好的办法嘛! 那么多的网站登出 是怎么做到的,我只是想在 用户在登录状态下,并没有登出,但是他已经关闭了浏览器,那么我的数据库中的数据显示仍然是 登录状态。这不是没有意义了嘛。
[/Quote]
我想你的意思是不是比如说:我刚注册个账号:aaa,登录过后进入页面,在数据库中aaa是已登录,而你有个登出按钮,点击的时候把aaa登录状态该成已登出,但是用户是直接关闭浏览器的,所以你不能判断,数据库中还是已登录是吧
No1bigtooth 2010-09-26
  • 打赏
  • 举报
回复
你要解决的问题我之前遇到过,是想解决单账号不能同时在线多个吧
由于不同的浏览器对session的支持不一样,所以很难做到客户退出的服务器端监测
例如你举出的用户直接关闭浏览器,这时候属于浏览器非法关闭行为,即使使用脚本也无法实现这种非正常关闭的监测
所以目前对禁止单账号同时多用户登录的问题有两种解决方法
一、定时对无操作的用户清空登录状态
二、如果账号被二次登录,顶出上次登录的账号,这样也只能实现单账号单用户使用
cuinan_6 2010-09-26
  • 打赏
  • 举报
回复
没有好的办法嘛! 那么多的网站登出 是怎么做到的,我只是想在 用户在登录状态下,并没有登出,但是他已经关闭了浏览器,那么我的数据库中的数据显示仍然是 登录状态。这不是没有意义了嘛。
b87936260 2010-09-26
  • 打赏
  • 举报
回复
是unload事件吗?
lilihua520 2010-09-26
  • 打赏
  • 举报
回复
来个倒计时
porschev 2010-09-26
  • 打赏
  • 举报
回复
只能是看这个用户在N分钟内无操作了。。。。那就改变状态
lingyou2199 2010-09-26
  • 打赏
  • 举报
回复
929856931
chenyu112 2010-09-26
  • 打赏
  • 举报
回复
我们系统原来有这个功能,后来被砍掉了
对于用户关闭浏览器之类的,还是没有捕获
只能通过专门的“退出”按钮,才可以,用着不方便

关注
gxq323 2010-09-26
  • 打赏
  • 举报
回复
很难解决,只能是后一个登陆的把前一个顶掉,否则在线状态不允许你登录了
Reaforstar 2010-09-26
  • 打赏
  • 举报
回复
   应该是单点登录里面的登出功能!!!
    我最近也在做,只是用的是基于SAML协议的SSO,里面涉及到证书什么的,也纠结的很!!!
chenguang79 2010-09-26
  • 打赏
  • 举报
回复
楼主的问题,有一个方法可以解决。但是这个方法要有二个条件。一是你的统计是否要很及时,二是你的网站用户访问量有多大
方法是,楼主在用户经常点击的页面内写一个方法,用户进到页面,你就修改用户的登录时间。
在每个用户进行登录的时候,用户登录成功后,或是验证登录之前,到你遍历一下数据库中用户的登录与现在时间差二十分钟的,你就可以认为他没有操作了。你就可以改变状态了
No1bigtooth 2010-09-26
  • 打赏
  • 举报
回复
onbeforeunload方法我使用过,这种方法的弊端是:无法捕捉非法关机事件,例如在你未关闭浏览器时,你电脑死机了,你直接按下了电源键;停电了;你用任务管理器关闭了浏览器等等;所以在使用这种服务器监测客户端关闭事件时,不要对登录单独设置一个数据库字段
一、源码特点 asp.net求职就业网站是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发,开发环境为vs2010,数据库为sqlserver2008,或者以上版本都可以,使用c#语言开发。 二、功能介绍 本系统采用Browser/Server技术模式,在前台使用asp.net开发技术,后台使用SQL Server数据库开发技术。本系统主要是为了方便负责就业管理工作的老师使用,向毕业生提供一些招聘信息、就业指导及相关的政策信息,以帮助同学们更好的就业。本系统分为管理员登陆子系统,包括用户信息管理功能,简历信息管理功能,和招聘信息管理功能。本系统为毕业生提供了一个便捷、可靠的信息平台,有利于学校更好的对大学生进行就业管理和指导 前台模块 该模块下有四个子功能 1.查看招聘信息 2.查看就业政策信息 3.下载文件 4.信息快讯查看 5.简历查看 6.用户注册、登录 后台模块 该模块下有七个子功能: (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行添加、删除、修改和查看 (3)简历管理:对简历信息进行添加、删除、修改和查看 (4)招聘管理:对招聘信息进行添加、删除、修改和查看 (5)就业政策管理:对就业政策信息进行添加、删除、修改和查看 (6)信息快讯管理:对信息快讯信息进行添加、删除、修改和查看 (7)下载管理:对下载信息进行添加、删除、修改和查看 (8)登入登出系统:登陆后台时需要通过登陆验证身份,在后台也可以选择退出系统。 三、注意事项 1、管理员账号:admin 密码:admin 2、开发环境为vs2010,数据库为sqlserver2008,或者以上版本都可以,使用c#语言开发。 3、数据库文件名是netfjiuye.mdf
一、源码特点 asp.net 博客系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 建立博客的网站,力图达到客户操作简单。系统分为后台和前台,后台由管理员管理,可以对评论信息、文章信息、用户信息进行管理;前台界面简洁友好,可以注册用户评论观看的需求 前台模块 该模块下有四个子功能 1. 博文搜索:采用模糊查询,对博文标题进行匹配,将返回的博文以标题和博文简略形式展示出来。 2. 查看博文,留言和评论:前台页面会展示新的博文,留言和评论,点击相应文字便可进入相应页面观察全文。 3. 添加留言或评论:可以在前台页面显示的博文或者留言板上输入自己的留言或评论。 4. 查看相册:可以在前台页面显示出的图片栏点击图片,展示相应的图片 后台模块 该模块下有七个子功能: 1. 管理博文:用于博主在后台编辑博文并发表,并可以实现博文分类。 2. 管理留言:管理前台留言信息。 3. 管理评论:管理前台用户对日志的进行的评论 4. 管理相册,添加自己的相册信息。 5. 添加用户:管理员可以拥有添加用户功能。 6. 登入登出系统:登陆后台时需要通过登陆验证身份,在后台也可以选择退出系统。 7.用户管理:对系统内的用户进行管理 三、注意事项 1、管理员账号:admin 密码:admin 2、开发环境为vs2008,数据库为sqlserver2005,使用c#语言开发。 3、数据库文件名是netfboke.mdf 4.登录地址:boke.aspx
(1) 日程管理:主要有添加日程,删除日程,查看日程 (2)用户登录、用户注册:用户通过登录的方式进行口令校验安全进入在线日程管理系统;用户注册是用户为进入该系统时将个人信息提交到数据库中。 (3)人员管理: 系统管理员(admin)可以对用户进行修改,其中对用户密码, 进行修改,对一些长期没上或者调走的人员进行删除操作,以减少系统压力。 (4)日程管理: 个人日程管理:其中使用日历控件,对某一天日程的安排可以直接单击当天的日历,进行主题,内容,开始时间,结束时间,地点和联系人的添加,修改,更新等操作。 我的便签:可以简单的设置今日日程,其中包括:便签标题,便签内容。可以进行修改,删除便签的操作。 (5)文档管理: 文档管理:公共文档管理可以对上传的文件浏览 ,查看 ,搜索,删除以及自己上传文件。 回收站:对自己删除的文件进行二次操作,以确保有用的信息不被删除。可以对其进行还原,彻底删除。里面显示文件的删除者,删除日期和文件名。 文件搜索功能:可以对文件名或者创建者进行搜索.方便了用户的使用,提高了效率。 (6)消息传递: 消息管理:通过输入开始时间和结束时间,按照要查选的时间段来进行消息查询和阅读,也可以进行添加新消息,对消息进行删除 修改和保存操作。大大提高了在线日程管理系统的实用性。 (7)系统管理: I.角色管理:可以添加角色名称和角色说明。对角色进行修改,删除,分配权限设置。点击进入权限设置可以对管理员的所有功能中的某几个功能进行分配。 II.登录日志: 可以通过开始时间和结束时间对这段时间登录过系统的所有人的登录日志进行查询,显示登录时间,登出时间,IP地址,是否成功,可以对其执行删除操作。 操作日志: 可以对日志进行查询 菜单排序:可以对界面上的顺序进行简单调整。 这是一款计算机毕业设计作品。只能用于作业设计。 QQ:31600328

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧