spring security3 统计在线用户

首先,我们需要使得ConcurrentSessionFilter生效并在spring-security.xml配置。
[html] view plaincopy
  1. <http auto-config="true" use-expressions="true">  
  2.     <!-- Uncomment to limit the number of sessions a user can have -->  
  3.     <session-management invalid-session-url="/index.do">  
  4.         <concurrency-control max-sessions="1"  
  5.             error-if-maximum-exceeded="false"/>  
  6.     </session-management>   
  7. </http>  
其次,需要在web.xml描述文件中配置中使得o.s.s.web.session.HttpSessionEventPublisher生效,这样servelt容器将会通知Spring Security session生命周期的事件(通过HttpSessionEventPublisher)。
[html] view plaincopy
  1. <listener>  
  2.     <listener-class>  
  3.         org.springframework.web.context.ContextLoaderListener  
  4.     </listener-class>  
  5. </listener>  
  6. <listener>  
  7.     <listener-class>  
  8.         org.springframework.security.web.session.HttpSessionEventPublisher  
  9.     </listener-class>  
  10. </listener>  
然后,借助于使用session注册跟踪(通过session并发控制),实现显示系统中当前活跃用户的数量。
         让我们在BaseController中添加一个简单的方法以及bean自动织入。@Autowired
[java] view plaincopy
  1. @Autowired  
  2. SessionRegistry sessionRegistry;  
  3. @ModelAttribute("numUsers")  
  4. public int getNumberOfUsers() {  
  5.    return sessionRegistry.getAllPrincipals().size();  
  6. }  
可以看到这暴露了一个能够在Spring MVC JSP页面中能够使用的属性。
最后,我们可以添加一个页脚footer.jspJBCP Pets站点中并使用这个属性。
[html] view plaincopy
  1. <body>  
  2.     <div id="footer">  
  3.         ${numUsers} user(s) are logged in!  
  4.     </div>  
  5. </body>  
如果你重新启动应用并登录,能够在每个页面的底部看到活动用户的数量。
参考资料:《Spring Security3》第六章第三部分翻译(Session的管理和并发)
                http://lengyun3566.iteye.com/blog/1198836

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

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

相关文章

node.js编程错误记录集

这是有关于我最近学习node.js中出现的错误的记录和纠正过程&#xff0c;因为我只是一名初学者&#xff0c;所以&#xff0c;遇到的错误可能真的是非常简单&#xff0c;如拼写错误等等&#xff0c;这些我当然是不会记录下来的&#xff0c;但是如果是一些我一时看不懂&#xff0c…

wstring和string简单正则表达式使用

std::regex e("([ ])3DSMAX(\d{4})_MAIN([^ ])"); //std::regex e("([^ ])3DSMAX(\d{4})_MAIN"); std::smatch sub_match; //从第一行中解析请求方法、路径和 HTTP 版本 std::string line “VRAY30_RT_FOR_3DSMAX2016_MAIN”; if (std::regex_match(line,…

【引用】phpmyadmin提示Access denied for user 'root'@'localhost' (using password: NO)的解决办法...

一、错误内容 今天用phpmyadmin连接mysql里面的某个数据库时时遇到了下面的提示&#xff1a; #1045 - Access denied for user rootlocalhost (using password: NO) phpMyAdmin 试图连接到 MySQL 服务器&#xff0c;但服务器拒绝连接。您应该检查 config.inc.php 中的主机、用户…

Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启动项目

在为项目启用数据库迁移的时候&#xff08;enable-migrations&#xff09;出现如下错误&#xff1a; 在程序集“XX”中未找到迁移配置类型“XX.Migrations.Configuration” 之前一直正确的&#xff0c;并没有修改项目中的代码&#xff0c;花了小半天找原因&#xff0c;stackove…

string、wstring、UTF-8、UTF-16、UTF-32之间转换

//string转wstring std::wstring string_to_wstring(const std::string& str) { setlocale(LC_ALL, “”); std::int64_t size mbstowcs(NULL, str.c_str(), 0); std::wstring w_str; w_str.resize(size); //算出代转wstring字节 mbstowcs(w_str.data(), str.c_str(), str…

论贱人

来源于我在论坛的一帖&#xff0c;个中缘由不说也罢。<<论贱人>> 天地阴阳&#xff0c;构精而生万物&#xff0c;万物生而后人生。物有性格&#xff0c;人亦有性格。性有善恶之分&#xff0c;格有贵贱之别。古人尝论人性之善恶&#xff0c;孟子云人性本善&#xff…

Delphi用ini文档实现界面无闪烁多语言转换

越来越多的程序使用了多国语言切换&#xff0c;虽然DELPHI自带多语言包的添加和配置&#xff0c; 但是那种方法在切换语言时界面会出现闪烁&#xff0c;而且实现起来很麻烦&#xff0c;这里我介绍给大家的是利用INI文件来读取界面的语种文字&#xff0c; 用这种方法&#x…

vi交互式批量替换 vi批量替换 vi查找和替换

vi中如何实现批量替换&#xff1f; 举个例子啊&#xff1a; 将文件tihuan&#xff08;假设此文本中字符a&#xff09;中的所有字符a换成字符w&#xff0c;其命令为&#xff1a; 1。vi tihuan 2。按esc键 3。按shift&#xff1a; 4。在&#xff1a;后输入 %s/a/w/g 其中s为&a…

linux的开始

这个星期天我去同学聚会了&#xff0c;开封的来了个同学李永生&#xff0c;新乡的来了个同学陈凯&#xff0c;大家在周六下午在一块吃了个饭&#xff0c;虽说有些小插曲&#xff0c;&#xff08;保成的女朋友和桂林&#xff08;桂皮&#xff09;来晚了&#xff09;&#xff0c;…

内联命名空间(inline namespace)

#include<iostream> //直接使用,不需要using inline namespace B { class A { public: A() default; ~A() default; void display() { std::cout << "a" << std::endl; } }; } i…

WordPress主题制作常用代码集合

如何你是个wordpress主题设计者&#xff0c;可能会在制作wordpress主题时为了一些寻找合适的wordpress代码焦虑&#xff0c;这里搜集总结wordpress主题开发中常用的代码片段&#xff0c;希望为你工作中带来方便 最新文章最新更新文章/页面最新评论最受欢迎文章文章分类下拉框文…

电脑配置多个git账号

配置user1 Host u1.github.com HostName github.com IdentityFile C:\Users\admin\.ssh\id_rsa1 PreferredAuthentications publickey User user1 配置user2 Host u2.github.com HostName github.com IdentityFile C:\Users\admin\.ssh\id_rsa PreferredAuthentications pub…

[Effective C++读书笔记]003_条款03_尽可能使用const

参考同事博客&#xff1a;http://www.cnblogs.com/hustcser/archive/2012/10/19/2731085.html转载于:https://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/17/2727057.html

sizeof操作

C98, sizeof只能对实例的变量或者类的静态成员进行操作&#xff0c;不能对类的非静态成员进行操作&#xff0c;若要想达成对类的非静态成员的操作&#xff0c;可以用如下ugly方式, 0强转成对象的指针&#xff0c;并解析访问对应非静态成员变量。 struct SomeType { int member…

利用VMware Infrastructure SDK编程控制虚拟机集群(3)

接上回&#xff0c;继续整理针对虚拟机的各种操作。 7、跨主机克隆虚拟机 网上资料比较少&#xff0c;当时费了很大劲才成功的&#xff0c;与同一台主机上的虚拟机克隆有区别。 /// <summary> /// 从模板部署虚拟机 /// </summary> public void Deploy() { …

H3C 帧中继初级配置(二)

配置思路&#xff1a; 1、先配置FR-SWITCH 2、再配置RTA、RTB、RTC FR-SWITCH详细配置步骤如下&#xff1a; [FR-Switch]fr switching //启动路由器帧中继功能 [FR-Switch]interface s6/0 [FR-Switch-Serial6/0]link-protocol fr //链路协议封闭为FR [FR-Switch-Serial6/0]fr…

君生我未生,我生君已老

君生我未生&#xff0c;我生君已老。君恨我生迟&#xff0c;我恨君生早。 君生我未生&#xff0c;我生君已老。恨不生同时&#xff0c;日日与君好。我生君未生&#xff0c;君生我已老。我离君天涯&#xff0c;君隔我海角。我生君未生&#xff0c;君生我已老。化蝶去寻花&#x…

微软sharepoint团队博客

http://blogs.msdn.com/b/sharepoint_chs/转载于:https://www.cnblogs.com/hqbird/archive/2012/10/24/2736523.html

Java并发同步器AQS(AbstractQueuedSynchronizer)学习笔记(2)

2019独角兽企业重金招聘Python工程师标准>>> 学习了AbstractQueuedSynchronizer 之后(Condition没有在上文做笔记&#xff0c;当应该不难理解)&#xff0c;接下来笔者就尝试着分析在JUC包中的各个同步器&#xff0c;其语义是如何实现的。 ReentrantLock 内部类Sync继…

Visual C++ 2008入门经典 第四章数组 字符串

/* //学习内容 数组及其使用方法 如何声明和初始化不同类型的数组 如何声明和使用多维数组 指针及其使用方法 如果声明和初始化不同类型的指针 数组和指针之间的关系 引用的概念及声明方法&#xff0c;关于使用引用的几点初步建议 如何在本地C程序中给变量动态分配内存 如何在C…