You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.2 KiB
Java

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
* ipsession
* hashmaphashmapipsession
*/
@Service
public class LoginService {
private static HashMap<String, HttpSession> userIdMap = new HashMap<>();
public void checkOnlyOneUser(HttpServletRequest request) {
//keyip+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();
}
//放入新的keyvalue正常登陆
userIdMap.put(key, session);
}
}