Я пробую Spring Security с реализацией JWT, используя только конфигурации XML, таким образом, избегая использования @EnableWebSecurity
и, поскольку я хочу достичь реализации на основе REST без сохранения состояния, таким образом, используя JWT и разрешая только URL-адрес входа в систему и ограничивая все остальные URL-адресатолько для аутентифицированных пользователей.
Я использую смесь аннотаций, например @PreAuthorize
и xml для достижения результатов.
Я посмотрел ответы на ошибку выше и в итоге обнаружил, что янужно сделать @EnableWebSecurity
для моего класса websecurityconfig (которого у меня нет, так как это конфигурация на основе xml)
My applicationContext.xml
также содержит конфигурации безопасности, и это как ниже, где "/ Login"это контроллер, который я выставил для авторизации:
<context:component-scan base-package="com.xyz.security.*"/>
<context:annotation-config/>
<mvc:cors>
<mvc:mapping path="/**"
allowed-origins="http://localhost:3000"
allowed-methods="GET, PUT, POST"
allow-credentials="false"/>
</mvc:cors>
<security:global-method-security pre-post-annotations="enabled" />
<security:http use-expressions="true" entry-point-ref="customAuthenticationEntryPoint" auto-config="true">
<security:csrf disabled="true"/>
<security:intercept-url pattern="/Login/**" access="permitAll" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />
<security:custom-filter before="FORM_LOGIN_FILTER" ref="jwtAuthenticationFilter"/>
</security:http>
<bean id="jwtAuthenticationFilter" class="com.xyz.jwt.JwtAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationSuccessHandler" ref="jwtAuthenticationSuccessHandler" />
</bean>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="jwtAuthenticationProvider" />
</security:authentication-manager>
Однако в моей реализации я получаю ошибку ниже
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.config.annotation.ObjectPostProcessor<java.lang.Object>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Конечно, я также предоставилниже приведены файлы для полной реализации того же
AccessJwtToken.java,
CustomAuthenticationEntryPoint.java,
JwtAuthenticationFilter.java,
JwtAuthenticationProvider.java,
JwtAuthenticationSuccessHandler.java,
JwtHeaderTokenExtractor.java,
JwtToken.java,
JwtTokenFactory.java,
UserContext.java
PS: я ссылался на статью "http://www.svlada.com/jwt-token-authentication-with-spring-boot/", чтобы реализовать фильтры и т. д. для JWT.