Squeak.ru - шаблоны программирования

Проблема с весенней безопасностью и пользовательским входом в систему

Моя проблема очень похожа на эту (Как я могу выполнить аутентификацию Spring Security из формы JSF), но я попробовал это решение, и проблема все еще возникает.

index.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>Info</title>
</h:head>

<h:body>
        <h:form prependId="false">
            <p>Usuario <h:inputText id="j_username" value="#{control.idUsuario}"/></p>
            <p>Password <h:inputSecret id="j_password" value="#{control.password}"/></p>
            <h:commandButton value="Entrar" action="#{control.login}" />
        </h:form>
</h:body>

</html>

Control.java

@ManagedBean
@SessionScoped
public class Control implements Serializable {

    private static final long serialVersionUID = 1L;    

    private String idUsuario;
    private String password;
    private UsuarioDAO usuarios;

    private Usuario usuario;

    public Control() {}

        public String login() {

        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext extenalContext = facesContext.getExternalContext();
        RequestDispatcher dispatcher = ((ServletRequest)extenalContext.getRequest()).getRequestDispatcher("/j_spring_security_check");

        try {
            dispatcher.forward((ServletRequest)
            extenalContext.getRequest(), (ServletResponse)extenalContext.getResponse());
        } catch (ServletException | IOException e) {
            e.printStackTrace();
        }

        facesContext.responseComplete();
        return null;
    }

    public String getIdUsuario() {return idUsuario;}
    public void setIdUsuario(String idUsuario) {this.idUsuario = idUsuario;}
    public String getPassword() {return password;}
    public void setPassword(String password) {this.password = password;}
    public Usuario getUsuario() {return usuario;}
    public void setUsuario(Usuario usuario) {this.usuario = usuario;}
    public UsuarioDAO getUsuarios() {return usuarios;}
    public void setUsuarios(UsuarioDAO usuarios) {this.usuarios = usuarios;}

}

applicationContext-security.xml

    <?xml version="1.0" encoding="UTF-8"?>

<beans:beans 
  xmlns= "http://www.springframework.org/schema/security"
  xmlns:beans= "http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
                      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                      http://www.springframework.org/schema/security
                      http://www.springframework.org/schema/security/spring-security-3.2.xsd">
    <http>
         <intercept-url pattern="/faces/ok.xhtml" access="ROLE_ADMIN"/> 
         <intercept-url pattern="/faces/ko.xhtml" access="ROLE_USER"/>
         <form-login 
            login-page="/faces/index.xhtml" 
            default-target-url="/login_success" 
            authentication-failure-url="/faces/failLogin.xhtml"
            username-parameter="j_username"
            password-parameter="j_password" />

        <port-mappings>
            <port-mapping http="8080" https="8443" /> <!-- Tomcat -->
        </port-mappings>
    </http>


    <beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <beans:property name="url" value="jdbc:mysql://localhost:3306/BUsuariosSecurity" />
        <beans:property name="username" value="root" />
        <beans:property name="password" value="" />
    </beans:bean> 

    <authentication-manager>
            <authentication-provider>
            <password-encoder hash="bcrypt" /> 
            <jdbc-user-service data-source-ref="dataSource"
                authorities-by-username-query="SELECT IdUsuario, Rol FROM TUsuarios WHERE IdUsuario = ?"
                users-by-username-query="SELECT IdUsuario, PwUsuario, Habilitado FROM TUsuarios WHERE IdUsuario = ?" />
        </authentication-provider>
    </authentication-manager>
</beans:beans>

Когда я пытаюсь войти в систему с действительным пользователем, он отправляет меня на файл failLogin.xhtml.

Моя база данных: https://gyazo.com/3997921c1c9bc2787a25c9b0ff904f4b

В чем моя ошибка?

Пожалуйста, помогите?


Ответы:


1

Проблема была в том, что пароли в БД были плохо зашифрованы, я попробовал их зашифровать с другого сайта и у меня все пошло.

26.02.2019
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...