Обработка различных пользовательских сессий в одном браузере весной mvc - PullRequest
0 голосов
/ 21 октября 2019

У меня есть приложение Spring mvc, в котором администратор может создавать и обновлять информацию о пользователях и открывать соответствующие окна пользователя в том же браузере. Но когда администратор открывает один пользовательский сеанс на одной вкладке и затем пытается открыть другой пользовательский сеанс на другой вкладке, он выдает ошибку, говоря, что один активный сеанс уже существует. Как мы можем позволить администратору играть с разными пользователями с их отдельными сессиями в одном браузере и на разных вкладках? Есть ли способ, которым мы можем справиться с этими сессиями

1 Ответ

0 голосов
/ 21 октября 2019

Я думаю, что когда пользователь открывает сессионное веб-приложение, укажите некоторую активную вкладку идентификатора браузера для объекта окна, например $window.name = "cliendId"

и приложение Spring, когда пользователь входит в систему, отправляет этот идентификатор окна через Интернет и обрабатывает с помощью пружины. security

public class CustomWebAuthenticationDetails extends WebAuthenticationDetails {

    private final Logger log = LoggerFactory.getLogger(CustomWebAuthenticationDetails.class);

    private final String clientid;

    CustomWebAuthenticationDetails(final HttpServletRequest request) {
        super(request);
        clientid = request.getHeader("clientid");

        log.debug("User Agent {}", request.getHeader("User-Agent"));
    }

    public String getClientid() {
        return clientid;
    }

}

и настройте

@Component
public class CustomWebAuthenticationDetailsSource implements AuthenticationDetailsSource<HttpServletRequest, WebAuthenticationDetails> {
    @Override
    public WebAuthenticationDetails buildDetails(final HttpServletRequest context) {
        return new CustomWebAuthenticationDetails(context);
    }
}

и теперь управляйте или перечисляйте идентификаторы этого сеанса пользователем, а когда пользователь открывает новый сеанс, предупреждает по той же вкладке или уничтожает сеансы с помощью собственного фильтра безопасности и реализуетЦепочка фильтров безопасности управляет каждым запросом

...