现在做了个在线用户管理,麻烦的是:管理员登陆后可以对在线用户进行踢出,
我用HttpSessionBindingListener实现其它功能,用application来保存在线用户,
但是我老大的意思是"踢出在线用户"就是让被选中的用户session清空.
网上查了很久,有说用jsessionid来取session,但是又有说这个方法已经被取消了,因为安全机制问题.
又有说在线不会那么精确
不知道大家有什么办法来实现?或者这个想法是有问题的
[b]问题补充:[/b]
哈哈解决了,用application存放用户id和对应的session, 要踢出哪个用户,直接根据用户id取得对应session,然后invalidate(),就是选中的用户失效!
有个Tomcat Probe里面就有清除session的功能,可以去看看如何实现的
http://www.lambdaprobe.org
protected ModelAndView handleContext(String contextName, Context context, HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if(request.getMethod().equalsIgnoreCase("post"))
{
Manager manager = context.getManager();
Enumeration enumeration = request.getParameterNames();
do
{
if(!enumeration.hasMoreElements())
break;
String sessionID = (String)enumeration.nextElement();
if("on".equals(request.getParameter(sessionID)))
{
Session session = manager.findSession(sessionID);
if(session != null && session.isValid())
session.expire();
}
} while(true);
} else
{
String sessionID = RequestUtils.getStringParameter(request, "sid");
Session session = context.getManager().findSession(sessionID);
if(session != null)
[b]session.expire();[/b]
}
return new ModelAndView(new InternalResourceView(getViewName()));
}