package com.manage.service; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.HashMap; /** * @author 谢铭 * @date 2021/9/22 * 校验是否同一ip、同一浏览器下多用户登陆,并且移除符合条件的session * hashmap全局存储用户,利用hashmap去重保持同一浏览器同一ip,只有一个session信息被保存 */ @Service public class LoginService { private static HashMap userIdMap = new HashMap<>(); public void checkOnlyOneUser(HttpServletRequest request) { //key,ip+ua共同构成单用户识别码 String ip = request.getRemoteAddr(); String ua = request.getHeader("user-agent"); String key = ip + ua; //value为session HttpSession session = request.getSession(); //判断是否存在key,存在就执行session过期的方法 if (userIdMap.containsKey(key)) { //非空就是保存过,就清理指定sessionId对应的session,处理完正常登录 userIdMap.get(key).invalidate(); } //放入新的key,value,正常登陆 userIdMap.put(key, session); } }