Spring MVC AuthenticationManager ожидал один соответствующий компонент, но нашел 4

Я новичок, использующий Spring Framework для веб-проекта и проекта API.

Я использую JWT для аутентификации API. У меня есть такая структура проекта:

ком:

контроллер, дао, модели, сервис, безопасность

безопасность: EntryPointUnauthorizedHandler, TokenUtils

security.config: WebSecurityConfiguration

security.controller: AuthenticationController, ProtectedController

security.filter: AuthenticationTokenFilter

security.model: AuthRequest, AuthResponse, SpringSecurityUser

security.service: UserDetailsServiceImpl

Теперь у меня ошибка с AuthenticationManager:

HTTP Status 500 – Internal Server Error
Type Exception Report

Message Servlet.init() for servlet [dispatcher] threw exception

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Servlet.init() for servlet [dispatcher] threw exception
    ...

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authenticationController': Unsatisfied dependency expressed through field 'authenticationManager'; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.security.authentication.AuthenticationManager' available: expected single matching bean but found 4: authenticationManagerBean,org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0,org.springframework.security.authentication.ProviderManager#0,org.springframework.security.authenticationManager
    ...

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.security.authentication.AuthenticationManager' available: expected single matching bean but found 4: authenticationManagerBean,org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0,org.springframework.security.authentication.ProviderManager#0,org.springframework.security.authenticationManager
    org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:215)
    ...

Я сделал много вещей, чтобы решить, что также есть некоторые другие ошибки, такие как другие файлы и ситуация, и они были решены, я думаю, но, поскольку у меня нет большого опыта работы с Spring, я не могу решить свою проблему, и я думаю, что что-то упускаю просто в одном из конфигурационных файлов так, Это мой pom.xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
         xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.parkingadmin</groupId>
    <artifactId>ParkingAdmin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>6</source>
                    <target>6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <http use-expressions = "true">
        <intercept-url pattern = "/**" access = "isAuthenticated()"/>
        <http-basic/>
    </http>

    <authentication-manager>
        <authentication-provider
                ref = "customAuthenticationProvider" />
    </authentication-manager>

    <packaging>war</packaging>

    <properties>
        <java-version>1.8</java-version>
        <org.springframework-version>5.0.5.RELEASE</org.springframework-version>
        <mysql-connector-java.version>5.1.46</mysql-connector-java.version>
        <spring.security.version>5.0.4.RELEASE</spring.security.version>
        <jackson.version>1.9.13</jackson.version>
    </properties>

    <dependencies>
        <!--spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.0.5.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.webflow</groupId>
            <artifactId>spring-webflow</artifactId>
            <version>2.4.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.6.0</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.3.0.CR1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.8.0-beta2</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.3.0-alpha4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.8.0-beta2</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.9.Final</version>
        </dependency>

        <!--java-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>jcl-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!--freemarker-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <!-- java mysql connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- jackson -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.5</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.5</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.5</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>



</project>

Это мой servlet.xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context = "http://www.springframework.org/schema/context"
       xmlns:mvc = "http://www.springframework.org/schema/mvc"
       xmlns:tx = "http://www.springframework.org/schema/tx"
       xmlns:wf = "http://www.springframework.org/schema/webflow-config"
       xsi:schemaLocation = "http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/webflow-config
        http://www.springframework.org/schema/webflow-config/spring-webflow-config.xsd">
    <!--<mvc:interceptors>-->
    <!--<mvc:interceptor>-->
    <!--<mvc:mapping path = "/admin/"/>-->
    <!--<mvc:mapping path = "/login"/>-->
    <!--<mvc:mapping path = "/admin/**"/>-->
    <!--<bean class = "com.interceptors.AccessHandlerInterceptor" />-->
    <!--</mvc:interceptor>-->
    <!--</mvc:interceptors>-->

    <!-- Step 3: Add support for component scanning -->

    <mvc:default-servlet-handler/>
    <mvc:annotation-driven />
    <context:component-scan base-package = "com.controllers, com.controllers.api, com.dao, com.services, com.security."/>

    <mvc:resources mapping = "/resources/**" location = "resources" />

    <!-- Step 5: Define Spring MVC view resolver -->
    <bean id = "viewResolver"
          class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name = "order" value = "2"/>
        <property name = "prefix" value = "/WEB-INF/views"/>
        <property name = "suffix" value = ".jsp"/>
    </bean>
    <bean id = "freemarkerConfig" class = "org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name = "templateLoaderPath" value = "/WEB-INF/views"/>
        <property name = "freemarkerVariables">
            <map>
                <entry key = "xml_escape" value-ref = "fmXmlEscape"/>
            </map>
        </property>
    </bean>
    <bean id = "fmXmlEscape" class = "freemarker.template.utility.XmlEscape"/>
    <bean id = "freemarkerViewResolver" class = "org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name = "order" value = "1"/>
        <property name = "cache" value = "false"/>
        <property name = "exposeSpringMacroHelpers" value = "true" />
        <property name = "prefix" value = ""/>
        <property name = "suffix" value = ".ftl"/>
        <property name = "requestContextAttribute" value = "rc"/>
    </bean>
    <tx:annotation-driven />
    <bean id = "transactionManager" class = "org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name = "sessionFactory" ref = "sessionFactory"/>
    </bean>
    <bean id = "dataSource"
          class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
        <property name = "url" value = "jdbc:mysql://localhost:3306/parking?autoReconnect=true&amp;useSSL=false" />
        <property name = "username" value = "root" />
        <property name = "password" value = "root" />
    </bean>
    <bean id = "sessionFactory" class = "org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name = "dataSource" ref = "dataSource"/>
        <!--scan all class entity to mapping-->
        <property name = "packagesToScan" value = "com.models" />
        <property name = "hibernateProperties">
            <props>
                <prop key = "hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key = "hibernate.show_sql">true</prop>
                <prop key = "hibernate.hbm2ddl.auto">update</prop>
                <prop key = "hibernate.format_sql">true</prop>
            </props>
        </property>
    </bean>
    <bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
        <property name = "dataSource" ref = "dataSource" />
    </bean>

    <mvc:cors>
        <mvc:mapping path = "/**"
                     allowed-origins = "*"
                     allowed-headers = "Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Authorization, X-Requested-With, requestId, Correlation-Id"
                     allowed-methods = "GET, PUT, POST, DELETE"/>
    </mvc:cors>

    <!--webflow-->
    <!--<wf:flow-executor id = "flowExecutor" />-->

    <!--<wf:flow-registry id = "flowRegistry" base-path = "WEB-INF/views/flows" flow-builder-services = "flowBuilderServices">-->
        <!--<wf:flow-location path = "register/signup-flow.xml" id = "register"/>-->
        <!--<wf:flow-location-pattern value = "/**/*-flow.xml" />-->
    <!--</wf:flow-registry>-->

    <!--<wf:flow-builder-services id = "flowBuilderServices" view-factory-creator = "viewFactoryCreator" />-->

    <!--<bean class = "org.springframework.webflow.mvc.servlet.FlowHandlerAdapter" >-->
        <!--<property name = "flowExecutor" ref = "flowExecutor"/>-->
    <!--</bean>-->

    <!--<bean class = "org.springframework.webflow.mvc.servlet.FlowHandlerMapping">-->
        <!--<property name = "flowRegistry" ref = "flowRegistry"/>-->
        <!--&lt;!&ndash;<property name = "order" value = "-1"/>&ndash;&gt;-->
    <!--</bean>-->

    <!--<bean id = "viewFactoryCreator" class = "org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">-->
        <!--<property name = "viewResolvers" ref = "freemarkerViewResolver" />-->
    <!--</bean>-->
</beans>

Это мой файл security.xml:

<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.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security.xsd">


    <!--<http pattern = "/resources/**" security = "none"/>-->

    <http>
        <!--<intercept-url pattern = "/admin/**" access = "hasAuthority('5')" />-->
        <intercept-url pattern = "/user/**" access = "hasAnyAuthority('5, 1') " />
        <intercept-url pattern = "/**" access = "permitAll()" />
        <form-login login-page = "/login" username-parameter = "mobile" always-use-default-target = "true" default-target-url = "/login-success" password-parameter = "confirm_mobile" />
        <!--<logout  />-->
        <!--<csrf  />-->
    </http>




    <beans:bean name = "bcryptEncoder"
                class = "org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

    <authentication-manager>
        <authentication-provider>
            <password-encoder ref = "bcryptEncoder"/>
            <jdbc-user-service data-source-ref = "dataSource"  users-by-username-query = "SELECT mobile, confirm_mobile, status FROM users WHERE mobile = ? "
                               authorities-by-username-query = "select mobile, type from users WHERE mobile = ?" />
        </authentication-provider>
    </authentication-manager>


    <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/parking" />
        <beans:property name = "username" value = "root" />
        <beans:property name = "password" value = "root" />

    </beans:bean>


</beans:beans>

И это мой WebSecurityConfig:

package com.security.config;

import com.security.filter.AuthenticationTokenFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableTransactionManagement
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;
    @Autowired
    private AuthenticationEntryPoint authenticationEntryPoint;


    @Autowired
    public void configureAuthentication(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
        authenticationManagerBuilder
                .userDetailsService(userDetailsService)
                .passwordEncoder(new BCryptPasswordEncoder());
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }


    @Bean
    public AuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
        AuthenticationTokenFilter authenticationTokenFilter = new AuthenticationTokenFilter();
        authenticationTokenFilter.setAuthenticationManager(super.authenticationManagerBean());
        return authenticationTokenFilter;
    }


    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf()
                .disable()
                .exceptionHandling()
                .authenticationEntryPoint(authenticationEntryPoint)
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                .antMatchers("/auth/**").permitAll()
                .anyRequest().authenticated();

        // Custom JWT based authentication
        httpSecurity
                .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
    }

}

Я ценю вашу помощь, спасибо

Редактировать: Запрошенный AuthFilter:



package com.security.filter;

import com.AppConstant;
import com.security.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AuthenticationTokenFilter extends UsernamePasswordAuthenticationFilter {

    @Autowired
    private TokenUtils tokenUtils;

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        tokenUtils = WebApplicationContextUtils
                .getRequiredWebApplicationContext(this.getServletContext())
                .getBean(TokenUtils.class);
        userDetailsService = WebApplicationContextUtils
                .getRequiredWebApplicationContext(this.getServletContext())
                .getBean(UserDetailsService.class);

        HttpServletResponse resp = (HttpServletResponse) response;
        resp.setHeader("Access-Control-Allow-Origin", "*");
        resp.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH");
        resp.setHeader("Access-Control-Max-Age", "3600");
        resp.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, " + AppConstant.tokenHeader);


        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String authToken = httpRequest.getHeader(AppConstant.tokenHeader);
        String username = this.tokenUtils.getUsernameFromToken(authToken);

        if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
            UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
            if (this.tokenUtils.validateToken(authToken, userDetails)) {
                UsernamePasswordAuthenticationToken authentication =
                        new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
                authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(httpRequest));
                SecurityContextHolder.getContext().setAuthentication(authentication);
            }
        }

        chain.doFilter(request, response);
    }

}

вы используете конфигурацию java и xml? Не могли бы вы поделиться своим AuthenticationTokenFilter?

YogendraR 03.07.2019 12:52

Я прикрепил его к сообщению выше @Yogendra123

Roham Shojaei 03.07.2019 12:57

почему вы используете и security.xml, и WebSecurityConfiguration.java? Вы должны либо использовать конфигурацию java, либо конфигурацию xml

YogendraR 03.07.2019 13:23

это не разрешено? :| Я этого не знал, так как мне изменить это и переместить в xml? Спасибо @Yogendra123

Roham Shojaei 03.07.2019 13:25

Когда я комментирую весь контент WebSecurityConfig, он все равно выдает мне эту ошибку!

Roham Shojaei 03.07.2019 14:01

XML - это старая школа, теперь вы должны использовать JavaConfig, прочитайте эту тему stackoverflow.com/questions/29162278/…

YogendraR 03.07.2019 14:09

Спасибо, но как мне решить эту проблему сейчас, тогда я подумаю об улучшении @Yogendra123

Roham Shojaei 03.07.2019 14:21

проверьте ответ, если это поможет, иначе поделитесь своим репозиторием кода, я попытаюсь воспроизвести ошибку самостоятельно.

YogendraR 03.07.2019 14:34

Я решил проблему, добавив это: alias = "authenticationManager" в менеджер аутентификации в security.xml

Roham Shojaei 03.07.2019 18:01
0
9
1 097
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам не нужно расширять UsernamePasswordAuthenticationFilter, вместо этого попробуйте расширить OncePerRequestFilter или GenericFilterBean

Попробуйте обновить метод ниже

@Bean
public AuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
        return new AuthenticationTokenFilter();;
} 

Вы можете обратиться к моему github репо, там есть рабочий пример того, что вам может понадобиться. Это конфигурация на основе Java.

Ответ принят как подходящий

Я решил проблему, добавив это: alias="authenticationManager" в диспетчер аутентификации в security.xml:

    <authentication-manager alias = "authenticationManager">
        <authentication-provider>
            <password-encoder ref = "bcryptEncoder"/>
            <jdbc-user-service data-source-ref = "dataSource"  users-by-username-query = "SELECT mobile, confirm_mobile, status FROM users WHERE mobile = ? "
                               authorities-by-username-query = "select mobile, type from users WHERE mobile = ?" />
        </authentication-provider>
    </authentication-manager>

Другие вопросы по теме