spring security 添加用户个数和所有用户功能

在使用spring security框架的好处之一就是

对用户管理很方便

例如,本文所说的对当前在线用户数目的显示和所有用户名显示

主要用到的是

sessionRegistry这个,它所在的包是

import org.springframework.security.core.session.SessionRegistry;
首先我们在controller里面autowire下

@Autowired  
SessionRegistry sessionRegistry; 

蓝后,就可以在对应的controller写方法啦

1.获得在线人数

比如,我在jumpController里面,设置了

@ModelAttribute("numUsers")  
public int getNumberOfUsers() {  
     return sessionRegistry.getAllPrincipals().size();  
}  

modelAttribute是指我们在后面所遇的mapping之前都会返回这个,

sessionRegistry.getAllPrincipals().size(); 
这个方法返回的是userdetails的所有用户个数,前台展示用户个数就可以使用jstl标签

最终显示的效果如图所示


2.获得所有在线用户信息

方法和上述类似,我们在controller中调用下面的函数

@RequestMapping(value = "/checkAllOnlineUsers",method = RequestMethod.GET,produces
			 ={"application/json;charset=UTF-8"})
	public @ResponseBody Map checkAllOnlineUsers(Model model,HttpServletRequest request,HttpServletResponse res) {
		Map map = new HashMap<>();
/*		for( Object principal :sessionRegistry.getAllPrincipals()){
			userList.add(principal);
		}*/
		
		map.put("users", sessionRegistry.getAllPrincipals());
		return map;
	}
插个题外话,这里之所以写的这么麻烦是因为用ajax发送的原因,不知道怎么优化,有知道的可以和博主一起探讨

我们同样使用

sessionRegistry.getAllPrincipals()
获得所有用户的entity,然后加入到list中,通过map形式返回给前端,前端解析的方式是这样的

function checkOnlineUsers(){
	$(allusers).html("");
	$.ajax({
		type : "GET",
		url : "checkAllOnlineUsers.do",
		data : {},
		dataType: "json", 
		error: function(){
		},
		success : function(msg) {
			var allusersObj =msg.users;
			$('#showAllUsers').modal('show');
			for(i in allusersObj)
			$(allusers).append(
					""+
					allusersObj[i].username+",   "+
					""
					);
		}
	});
	
}

红色的那段是在页面画,
allusersObj[i].username
就是我们的用户名啦~~

最终显示的效果如下所示

spring security 添加用户个数和所有用户功能_第1张图片

到这里,这个教程就实现啦~~很简单的

同时推荐个spring security相关的博客和翻译官方的开发文档 点击这里

你可能感兴趣的:(Java,Web原创教程,Java,Web技巧)