Spring MVC AuthenticationManager mengharapkan satu kacang yang cocok tetapi menemukan 4

Saya seorang pemula menggunakan kerangka pegas untuk proyek web dan API

Saya menggunakan JWT untuk otentikasi API. Saya memiliki struktur proyek ini:

com:

pengontrol,dao, model, layanan, keamanan

keamanan: EntryPointUnauthorizedHandler, TokenUtils

security.config: Konfigurasi Keamanan Web

keamanan.controller: AuthenticationController, ProtectedController

keamanan.filter: AuthenticationTokenFilter

keamanan.model: AuthRequest, AuthResponse, SpringSecurityUser

keamanan.layanan: UserDetailsServiceImpl

Sekarang saya mengalami kesalahan dengan 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)
    ...

Saya telah melakukan banyak hal untuk mengatasinya juga ada beberapa kesalahan lain seperti tetapi file dan situasi lain dan semuanya telah diselesaikan. Saya rasa, tetapi karena saya tidak memiliki banyak pengalaman di Spring, saya tidak dapat menyelesaikan masalah saya dan sepertinya saya melewatkan sesuatu. sederhana di salah satu file konfigurasi jadi, Ini pom.xml saya:

<?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>

Ini servlet.xml saya:

<?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>

Ini keamanan saya.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>

Dan ini WebSecurityConfig saya:

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);
    }

}

Saya menghargai bantuan Anda, Terima kasih

Sunting: AuthFilter yang Diminta:



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);
    }

}


person Roham Shojaei    schedule 03.07.2019    source sumber
comment
apakah Anda menggunakan konfigurasi java dan xml? Bisakah Anda membagikan AuthenticationTokenFilter Anda?   -  person YogendraR    schedule 03.07.2019
comment
Saya lampirkan pada postingan di atas @ Yogendra123   -  person Roham Shojaei    schedule 03.07.2019
comment
mengapa Anda menggunakan security.xml dan WebSecurityConfiguration.java? Anda harus menggunakan konfigurasi Java atau konfigurasi xml   -  person YogendraR    schedule 03.07.2019
comment
itu tidak diperbolehkan? :| Saya tidak mengetahuinya jadi bagaimana saya harus mengubahnya dan memindahkannya ke xml? Terima kasih @ Yogendra123   -  person Roham Shojaei    schedule 03.07.2019
comment
Ketika saya mengomentari semua konten WebSecurityConfig, saya masih mendapatkan kesalahan itu!   -  person Roham Shojaei    schedule 03.07.2019
comment
XML sudah ketinggalan zaman sekarang Anda harus menggunakan JavaConfig, baca utas ini stackoverflow.com/questions/29162278/   -  person YogendraR    schedule 03.07.2019
comment
Terima kasih tetapi bagaimana saya bisa mengatasi masalah ini sekarang maka saya akan memikirkan untuk meningkatkan @ Yogendra123   -  person Roham Shojaei    schedule 03.07.2019
comment
periksa jawaban jika itu membantu, jika tidak, bagikan repo kode Anda, saya akan mencoba mereproduksi sendiri kesalahannya..   -  person YogendraR    schedule 03.07.2019
comment
Saya telah memecahkan masalah dengan menambahkan ini: alias=authenticationManager ke manajer otentikasi di security.xml   -  person Roham Shojaei    schedule 03.07.2019


Jawaban (2)


Anda tidak perlu memperluas UsernamePasswordAuthenticationFilter, coba perpanjang OncePerRequestFilter atau GenericFilterBean

Coba perbarui metode Anda di bawah ini

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

Anda dapat merujuk ke repo github saya, yang memiliki contoh kerja tentang apa yang mungkin Anda perlukan. Ini adalah konfigurasi berbasis Java.

person YogendraR    schedule 03.07.2019

Saya telah memecahkan masalah dengan menambahkan ini: alias="authenticationManager" ke manajer otentikasi di 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>
person Roham Shojaei    schedule 03.07.2019