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

Posted web小菜鸟ing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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标签

<button id="currenUsersNum" οnclick="checkOnlineUsers()" type="button" class="btn btn-link btn-xs" style="color:blue;font-size:13px">在线人数:$numUsers[详细]</a>
最终显示的效果如图所示


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

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

@RequestMapping(value = "/checkAllOnlineUsers",method = RequestMethod.GET,produces
			 ="application/json;charset=UTF-8")
	public @ResponseBody Map<String, Object> checkAllOnlineUsers(Model model,HttpServletRequest request,HttpServletResponse res) 
		Map<String, Object> 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) 
			<span style="color:#FF0000;">var allusersObj =msg.users;
			$('#showAllUsers').modal('show');
			for(i in allusersObj)
			$(allusers).append(
					"<strong>"+
					allusersObj[i].username+",   "+
					"</strong>"
					);</span>
		
	);
	

红色的那段是在页面画,
<span style="color:#FF0000;">allusersObj[i].username</span>
就是我们的用户名啦~~

最终显示的效果如下所示

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

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

以上是关于spring security 添加用户个数和所有用户功能的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Security 中基于某种所有权设置用户角色

Grails Spring Security UI、用户和​​角色管理访问

非所有者时 Spring Security 更新 acl

在 Spring Security 中添加新用户

如何在 Spring WebFlux Security(Reactive Spring Security)配置中将多个用户角色添加到单个 pathMatcher/Route?

Spring Data Rest with Spring Security - 按当前用户查找所有内容