您可以通过访问SessionRegistry来查找当前登录的用户,从而使用Spring Security的并发会话控制。在Spring Security
3中,ConcurrentSessionControlStrategy负责控制是否允许用户登录后创建会话。您可以扩展此类,并根据用户数量添加额外的检查:
public class MySessionAuthenticationStrategy extends ConcurrentSessionControlStrategy { int MAX_USERS = 1000; // Whatever SessionRegistry sr; public MySessionAuthenticationStrategy(SessionRegistry sr) { super(sr); this.sr = sr; } @Override public void onAuthentication(Authentication authentication, HttpServletRequest request, HttpServletResponse response) { if (sr.getAllPrincipals().size() > MAX_USERS) { throw new SessionAuthenticationException("Maximum number of users exceeded"); } super.onAuthentication(authentication, request, response); }}然后,您可以按照Spring Security参考手册中所述将其注入到安全名称空间中。
在Spring Security 2.0中,并发会话控件的实现略有不同,您可以改为自定义ConcurrentSessionController。



