Процесс входа в систему одновременно с весенней безопасностью - PullRequest
0 голосов
/ 03 октября 2019

У меня есть веб-приложение, которое работает с Primefaces 6.0 - Spring Security 3.0 - Spring 4.0, HDIV и mybatis. Моя проблема с логином, когда я захожу в систему безопасности Spring с пользователем A, она успешно обрабатывается Spring и загружает информацию пользователя A. Когда я выполняю вход в систему для пользователя A, B, C и D, в то же время пружина НО успешно обрабатывает каждого пользователя, пользователь A загружает информацию пользователя A, пользователь B загружает информацию пользователя C, пользователь C загружает информацию пользователя C и пользователь D загружаетинформация о пользователе. В чем может быть проблема?

Что мне делать с приведенным ниже кодом, так это разрешить Spring Security выполнять аутентификацию. Этот метод находится в моем ManagedBean с @ViewScoped и вызывается из .xhtml

public void procesarLogin() {
try {
        Authentication requestToken = new UsernamePasswordAuthenticationToken(
            getLoginForm().getJ_username(), getLoginForm().getJ_password());
        try {
        Authentication authenticationResponseToken
            = authenticationManager.authenticate(requestToken);
        SecurityContext sc = SecurityContextHolder.getContext();
        sc.setAuthentication(authenticationResponseToken);
        if (authenticationResponseToken.isAuthenticated()) {
            sc.setAuthentication(authenticationResponseToken);
            SessionUtil.setSessionAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, sc);
            authSuccessHandler.onAuthenticationSuccess(FacesUtil.getRequest(),
                FacesUtil.getResponse(), authenticationResponseToken);
        }
        } catch (BadCredentialsException | LockedException
            | DisabledException badCredentialsException) {
        logger.error("error", badCredentialsException);
        FacesUtil.errorMessage("Falló autenticación, verifique su usuario, contraseña o el estado de su cuenta");
        } catch (ServletException | IOException ex) {
        logger.error("error", ex);
        java.util.logging.Logger.getLogger(LoginView.class.getName()).log(Level.SEVERE, null, ex);
        }
    } catch (AuthenticationException e) {
        logger.error("", e);
    }
}
<p:commandButton id="btnIniciarSesion" style="width: 100%;padding-top: 5px;padding-bottom: 5px;"
                 class="btn btn-primary" ajax="false"
                 actionListener="#{loginBean.procesarLogin()}" 
                 value="Iniciar sesión"/>
...