@MaximIs

Как исправить ошибку 401 при авторизации в приложении?

Добрый день.

Вот мой SecurityConfiguration :

SecurityConfiguration

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    private final DataSource dataSource;

    public SecurityConfiguration(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic();
        http
                .authorizeRequests()
                .antMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-ui/**").permitAll()
                .anyRequest().authenticated();
        http.csrf().disable();
        http.headers().frameOptions().disable();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication()
                .dataSource(dataSource)
                .passwordEncoder(passwordEncoder())
                .usersByUsernameQuery("select id, name, password, activate from users where name=?")
                .authoritiesByUsernameQuery("select users.name, roles.name from users_roles\n" +
                        "join roles on roles.id = users_roles.role_id\n" +
                        "join users on users.id = users_roles.user_id\n" +
                        "where users.name = ?");
    }

    @Bean
    PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}


Property file
# ===============================
# = DATA SOURCE
# ===============================
# Set here configurations for the database connection
spring.datasource.url=jdbc:postgresql://localhost:5432/bd
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=org.postgresql.Driver
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1

# ===============================
# = JPA / HIBERNATE
# ===============================
# Show or not log for each sql query
spring.jpa.show-sql=true
# Hibernate ddl auto (create, create-drop, update): with "create-drop" the database
# schema will be automatically created afresh for every start of application
#spring.jpa.hibernate.ddl-auto=create-drop

# Naming strategy
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect

# ===============================
# = FLYWAY
# ===============================
spring.flyway.locations=classpath:db/migration
#spring.flyway.schemas=schema1
#spring.flyway.baseline-on-migrate=true
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый вечер.
Ошибки 4хх - являются ошибками на клиенте.
Было бы неплохо увидеть содержимое post запроса, который убегает на сервер и конечно же то, что приходит на сервер.
Причины могут быт разные:
1) содержимое формы (названия инпутов - имя пользователя и пароль), а также ожидаемые названия инпутов отличаются. Например, на сервере ожидается username & password, а вы отправляете login & pass. Обратите внимание на атрибут name инпутов и при необходимости добавьте сответствующие названия в конфиг. .formLogin()
https://www.baeldung.com/spring-security-login
2) может быть запрос до спринга даже не доходит по каким-то причинам.
В общем, не буду гадать и вы не гадайте. Проведите дебаг проекта и все станет на свои места
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы