Asp.Net MVC3.0网站统计登录认证的在线人数

news/2024/5/9 15:20:50/文章来源:https://blog.csdn.net/weixin_33693070/article/details/86346327

Asp.Net MVC3.0网站统计登录认证的在线人数

前言

  对于一个网站来说,统计在线人数是一个很重要的工作。平时也发现很多的网站论坛等都有在线人数的显示。对于一个网站如果在线人数很多,用户看到了这么个数字也是很了不起的事情。由于之前对于这个知识点只是知道,并没有去了解过,这两天偶然的机会又看到了,于是自己整理了一个简单的版本,也方便让大家来给提提意见。

  本文主要通过Application和Session全局来统计在线人数,暂时只统计登录验证过的。实现的大致方案如下:

  1、在全局应用程序启动的时候,Application["count"]=0;初始化统计在线人数为0

  2、处理一个简单的Form登录认证,在登录的时候对全局变量Application["count"]进行累加1的操作。同时,在登录的时候写入Session值,设置一个有效的时间为1分钟(多长时间根据需要,这里只是作为测试使用)。

  3、在Session失效、用户登出、浏览器关闭的情况触发,全局的会话函数进行对全局变量Application["count"]进行累减1的操作。

正文

 第一步:新建一个Asp.Net MVC3.0的Web项目,选择Razor引擎。设置初始在线人数。在Global.asax文件中找到Application_Start。

复制代码
        protected void Application_Start(){Application["count"] = 0;   ///在应用程序第一次启动时初始化在线人数为0AreaRegistration.RegisterAllAreas();RegisterGlobalFilters(GlobalFilters.Filters);RegisterRoutes(RouteTable.Routes);}
复制代码

第二步:简单修改登录验证,认证成功,写入Session值,并对在线人数进行加1的处理。

复制代码
        [HttpPost]public ActionResult LogOn(LogOnModel model, string returnUrl){if (ModelState.IsValid)  简单的验证即为登录有效{//会话标示写入Session值,并设置有效时间System.Web.HttpContext.Current.Session.Add("SessionID", Guid.NewGuid().ToString());System.Web.HttpContext.Current.Session.Timeout = 5;///登录成功,对在线人数全局变量进行加1处理System.Web.HttpContext.Current.Application["count"] = Convert.ToInt32(System.Web.HttpContext.Current.Application["count"]) + 1;if (Request.QueryString["ReturnUrl"] != null){FormsAuthentication.RedirectFromLoginPage(model.UserName, false);}else{FormsAuthentication.SetAuthCookie(model.UserName, false);return RedirectToAction("Index", "Home");}}return View(model);}
复制代码

第三步:在全局Global.asax文件中添加Session_End中,即会话结束(登出,浏览器关闭,Session到期失效)

        protected void Session_End(object sender, EventArgs e){Application.Lock();Application["count"] = Convert.ToInt32(Application["count"]) - 1;Application.UnLock();}

这样要要记得加锁处理,因为可能有并发的问题。登录的时候也要进行加锁和解锁的处理,上面没加而已。

第四步:对于登出的Action进行处理如下:

        public ActionResult LogOff(){FormsAuthentication.SignOut();System.Web.HttpContext.Current.Session.Abandon();//取消当前会话return RedirectToAction("Index", "Home");}

取消当前会话,这样才会触发在上面定义的全局的Session_End函数。

第五步:在布局模版中的body标签中添加onbeforeunload事件。

由于该事件在刷新和关闭的时候都会调用,所以在实现时做如下处理:

复制代码
<script type="text/javascript">function PageClose() {var n = window.event.screenX - window.screenLeft;var b = n > document.documentElement.scrollWidth - 20;if (b && window.event.clientY < 0 || window.event.altKey) {alert("是关闭而非刷新");if ('@Request.IsAuthenticated' == 'True') {window.location.href = "../Account/ClosePage";}}else {alert("是刷新而非关闭");}}
</script>
复制代码

此时关闭的情况调用的Action如下: 

        public void ClosePage(){FormsAuthentication.SignOut();System.Web.HttpContext.Current.Session.Abandon();//取消当前会话}

总结

  实例下载链接为http://pan.baidu.com/share/link?shareid=1839967473&uk=4244870074,可以下载项目,运行进行测试即可,暂时本人用IE8测试功能基本实现。针对关闭浏览器网页触发事件,兼容各个浏览器的问题暂未考虑,如果你对此感兴趣,记得先用IE进行测试哦。如果发现问题希望及时通知,以便对方案进行更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_794404.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

烽火18台系列之十——钓鱼网站监控的需求与实战

身边的网络钓鱼 提到钓鱼网站&#xff0c;大家再熟悉不过了。如果您是网站运维人员&#xff0c;尤其是金融、电子商务、教育行业的&#xff0c;很有可能就经历过自己的网站被仿冒的事件。如果作为个人&#xff0c;我敢说您百分百经历过钓鱼事件。比如您一定收到过以下类似信息&…

大型网站框架从单台服务器到群集的演变过程(转)

关键词: 架构 性能 数据库 服务器 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值 得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再…

大型网站架构

前言 本文是对《大型网站架构设计》(李智慧 著)一书的梳理&#xff0c;类似文字版的“思维导图”全文主要围绕“性能&#xff0c;可用性&#xff0c;伸缩性&#xff0c;扩展性&#xff0c;安全”这五个要素性能&#xff0c;可用性&#xff0c;伸缩性这几个要素基本都涉及到应用…

分享学习网站网址

2019独角兽企业重金招聘Python工程师标准>>> http://yingyangpeople.com/ 个人代理极速云http://www.iyunv.com/forum.php linux学习网址https://www.elastic.co/guide/index.html elk学习网址https://github.com/roncoo/roncoo-cmdb 龙果系统&#xff08;运维&…

phpcms中调用外部网站数据

1、在phpcms后台模块->模块管理->数据源->外部数据源 中 添加外部数据源2、在phpcms前台模板中&#xff0c;使用get标签获取数据源中数据。{pc:get sql"SELECT * FROM pre_forum_thread" cache"3600" dbsource"discuz" return"dat…

扁平化网站结构为什么对搜索引擎友好

扁平化网站结构为什么对搜索引擎友好 了解过搜索引擎爬虫抓取爬行的可能会有一个比较清晰的答案&#xff0c;是的就是帮助爬虫尽可能的抓取页面&#xff0c;只有被读取到的页面才有可能被收录。 扁平化的结构将网站的页面尽可能的直接展示在蜘蛛爬虫面前或者很容易被爬虫发现&a…

《流量的秘密 Google Analytics网站分析与商业实战》一2.5 有问有答:选择合适的工具...

本节书摘来自异步社区《流量的秘密 Google Analytics网站分析与商业实战》一书中的第2章&#xff0c;第2.5节&#xff0c;作者 【英】Brian Clifton&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 有问有答&#xff1a;选择合适的工具 参考资料1 www.b…

一个关于各语言对比的网站

2019独角兽企业重金招聘Python工程师标准>>> http://hyperpolyglot.org/ 转载于:https://my.oschina.net/xiaobingchuanqi/blog/894603

【ASP.NET 问题】IIS发布网站后出现 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误的解决办法...

首先设置4.0缓冲池&#xff0c;然后执行以下操作。 新装IIS&#xff0c;然后发布网站&#xff0c;运行出现如下错误提示 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 于是去网上找资料&#xff0c;轻松搞定。o(∩_∩)o …

win7+iss7的配置,以及如何在本地IIS服务器挂载一个网站

虽然学过在XP安装IIs服务器和在IIS服务器挂载网站的东西&#xff0c;但是win7和X&#xff30;的方式还是有许多不同的。废话不说直接进入正题 在本地安装IIS服务器在IIS服务器中添加你的项目将你项目的首页设置为整个网站的默认页设置你的网站的其他的一些选项下面就按点说明&a…

鼠标移至div内部其他层时,触发mouseout

话说有一个DIV元素&#xff0c;其内部有一个IMG元素和SPAN元素&#xff0c;不用理会这两个内部元素怎么布局&#xff0c;这不是我要讨论的重点。 为了实现一些特殊的效果&#xff0c;我需要利用TD的onmouseover和onmouseout事件&#xff0c;测试时就会发现如下的状况&#xff1…

处理 Vue 单页面 SEO 的另一种思路

vue-meta-info 官方地址&#xff1a; https://github.com/monkeyWang... &#xff08;设置vue 单页面meta info信息&#xff0c;如果需要单页面SEO&#xff0c;可以和 prerender-spa-plugin形成更优的配合&#xff09; 单页面应用在前端正大放光彩。三大框架 Angular、Vue、Rea…

现货!《PHP7实践指南:o2o网站与App后台开发》京东天猫有售

终于发售了&#xff0c;啥也不想说了&#xff0c;喜欢的或需要的就点击 链接 进去购买吧。 另外此书将作为 2017 PHP全球开发者大会 现场活动用书天猫购书包邮 PHP7实践指南:O2O网站与App后台开发 数据库设计 PHP开发工程 适合作为企业内部培训、培训机构和大专院校的教学参考书…

密码学-网站的安全登录认证设计

用户登录是任何一个应用系统的基本功能&#xff0c;特别是对于网上银行系统来说&#xff0c;用户登录的安全性尤为重要。如何设计一个网站的安全登录认证程序&#xff0c;是本文主要讨论的问题。 静态密码存在着比较多的安全隐患&#xff0c;攻击者有很多手段获得静态密码&…

最近跟踪网站,发现还是存在常规网络错误。

先在国内搜索相关问题&#xff0c;没找到特别合适的。 无可奈何之好再去国外的找。这回终于找到正解了。 错误&#xff1a;偶然才发生的错误&#xff0c;大概过了半个小时才会出现的。 错误的原因&#xff0c;大概在于&#xff0c;sql连接池的数据连接由于某些原因变成了bad co…

实现基于LNMP 的电子商务网站

一&#xff1a;准备工作 1.检查防火墙和SELinux是否关闭&#xff0c;如果二者不关闭&#xff0c;会严重影响实验。 关闭防火墙&#xff1a;iptables -F 临时清除 可靠关闭&#xff1a;systemctl stop firewalld 关闭selinux:setenforce 0 永久关闭&#xff1a;修改配置文件vim …

写个网站吧! --Flask+Vue.js+MySQL+Docker(1)--简介

最近花了一星期的时间按照前后端分离的模式写了一个单页面网站&#xff0c;内容没啥新意&#xff0c;就是个todolist&#xff0c; 实现的方法也是大家很熟悉的前端vue.js&#xff0c;后端flask-restful,数据库MySQL&#xff0c;部署方式选择的是流行的docker容器部署。 原本这…

写个网站吧! --Flask+Vue.js+MySQL+Docker(2)--前端

前序内容请观看&#xff1a;点这儿&#xff01; 写个小站的业务可能大家也不是太关心&#xff0c;反而页面的实现效果是最关心的&#xff0c;这里我就先讲前端的部分。 先说说涉及到的技术栈,首先是Vue.js&#xff0c;作为现在最火的前端框架&#xff0c;不多说啥了&#xff…

写个网站吧! --Flask+Vue.js+MySQL+Docker(3)--后端

前情回顾&#xff1a;写个网站吧&#xff01; --FlaskVue.jsMySQLDocker&#xff08;1&#xff09;--简介 总结&#xff1a;后端好像也没啥要讲的 先说说使用的技术栈&#xff1a; Flask&#xff0c;FLask-Restful&#xff0c;Flask-SQLalchemy, Flask-Cors, Python-dotenv,…

写个网站吧! --Flask+Vue.js+MySQL+Docker(4)--数据库

前情回顾&#xff1a; 写个网站吧&#xff01; --FlaskVue.jsMySQLDocker&#xff08;1&#xff09;--简介 说第三篇写的少&#xff0c;那你还没看第四篇&#xff0c;没错这一篇更少&#xff0c;少到我都想贴几个之前写的mysql的链接来水过去。 老规矩说一下技术栈&#xff…