Программисты JAVA общаются здесь
-
Anonymous
Один сеанс уже запущен в браузере в новой таблице, войдите в систему того же пользователя, выйдите из старого и продолжи
Сообщение
Anonymous »
@Component
публичный класс CustomSessionAuthenticationStrategy реализует SessionAuthenticationStrategy {
Код: Выделить всё
private SessionRegistry sessionRegistry;
private AdminUserRepository userRepository;
public void setSessionRegistry(SessionRegistry sessionRegistry) {
this.sessionRegistry = sessionRegistry;
}
@Autowired
public void UserServiceImpl(AdminUserRepository userRepository) {
this.userRepository = userRepository;
}
@Resource(name = "uniqueIdSessionMap")
ConcurrentHashMap uniqueIdSessionMap;
@Override
public void onAuthentication(Authentication authentication, HttpServletRequest request,
HttpServletResponse response) throws SessionAuthenticationException {
if (authentication.getPrincipal() instanceof UserDetails) {
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
AdminUser user = userRepository.findByUserid(userDetails.getUsername());
HttpSession currentSession = request.getSession(false);
String uniqueId = user.getUniqueId().toString();
if (uniqueIdSessionMap.containsKey(uniqueId)) {
HttpSession oldsessionid = uniqueIdSessionMap.get(uniqueId);
if (oldsessionid != null) {
uniqueIdSessionMap.remove(uniqueId, oldsessionid);
try {
oldsessionid.invalidate();
} catch (IllegalStateException e) {
}
}
}
if (currentSession != null) {
uniqueIdSessionMap.put(uniqueId, currentSession);
}
}
}
Это работает нормально в другом браузере, но когда тот же браузер с новой вкладкой не работает
Подробнее здесь:
https://stackoverflow.com/questions/791 ... -and-log-o
1731500769
Anonymous
@Component
публичный класс CustomSessionAuthenticationStrategy реализует SessionAuthenticationStrategy {
[code]private SessionRegistry sessionRegistry;
private AdminUserRepository userRepository;
public void setSessionRegistry(SessionRegistry sessionRegistry) {
this.sessionRegistry = sessionRegistry;
}
@Autowired
public void UserServiceImpl(AdminUserRepository userRepository) {
this.userRepository = userRepository;
}
@Resource(name = "uniqueIdSessionMap")
ConcurrentHashMap uniqueIdSessionMap;
@Override
public void onAuthentication(Authentication authentication, HttpServletRequest request,
HttpServletResponse response) throws SessionAuthenticationException {
if (authentication.getPrincipal() instanceof UserDetails) {
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
AdminUser user = userRepository.findByUserid(userDetails.getUsername());
HttpSession currentSession = request.getSession(false);
String uniqueId = user.getUniqueId().toString();
if (uniqueIdSessionMap.containsKey(uniqueId)) {
HttpSession oldsessionid = uniqueIdSessionMap.get(uniqueId);
if (oldsessionid != null) {
uniqueIdSessionMap.remove(uniqueId, oldsessionid);
try {
oldsessionid.invalidate();
} catch (IllegalStateException e) {
}
}
}
if (currentSession != null) {
uniqueIdSessionMap.put(uniqueId, currentSession);
}
}
}
[/code]
Это работает нормально в другом браузере, но когда тот же браузер с новой вкладкой не работает
Подробнее здесь: [url]https://stackoverflow.com/questions/79184776/one-session-is-already-running-in-browser-in-new-table-login-same-user-and-log-o[/url]