在使用spring security框架的好处之一就是
对用户管理很方便
例如,本文所说的对当前在线用户数目的显示和所有用户名显示
主要用到的是
sessionRegistry这个,它所在的包是
import org.springframework.security.core.session.SessionRegistry;
首先我们在controller里面autowire下
@Autowired
SessionRegistry sessionRegistry;
比如,我在jumpController里面,设置了
@ModelAttribute("numUsers")
public int getNumberOfUsers() {
return sessionRegistry.getAllPrincipals().size();
}
sessionRegistry.getAllPrincipals().size();
这个方法返回的是userdetails的所有用户个数,前台展示用户个数就可以使用jstl标签
最终显示的效果如图所示
方法和上述类似,我们在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相关的博客和翻译官方的开发文档 点击这里