Я просто использую Spring-Security для авторизации, ресурс URL зависит от ролей, связанных с пользователем, но мой вход в систему не зависит от Spring-Security.Но мои авторизованные URL-адреса не входят в мой JWTAuthenticationFilter, который используется для авторизации URL-адреса. Я не знаю, где проблема в моем коде, пожалуйста, ознакомьтесь с приведенным ниже кодом и укажите проблему в моей конфигурации или JWTAuthenticationFilter, который будет оченьполезно.Или любая ссылка ссылка также будет очень ценится.Большое вам спасибо!
мой файл конфигурации:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.POST,
"/user/login",
"/user/sso/login")
.permitAll()
.anyRequest().authenticated()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET,
"/pos/findAllList")
.authenticated().and()
.addFilterBefore(new JWTAuthenticationFilter(),
FilterSecurityInterceptor.class)
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
web
.ignoring()
.antMatchers("/admin/swagger/**");
}
}
мой JWTAuthenticationFilter:
@Log4j2
public class JWTAuthenticationFilter extends AbstractSecurityInterceptor implements Filter{
@Autowired
private FilterInvocationSecurityMetadataSource securityMetadataSource;
@Autowired
private SmcAccessDecisionManager smcAccessDecisionManager;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
super.setAccessDecisionManager(smcAccessDecisionManager);
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
log.info("进入SmcSecurityFilter");
FilterInvocation fi = new FilterInvocation( request, response, chain );
invoke(fi);
}
public void invoke( FilterInvocation object ) throws IOException, ServletException{
super.beforeInvocation(object);
Collection<ConfigAttribute> attributes = securityMetadataSource.getAttributes(object);
this.smcAccessDecisionManager.decide(SecurityContextHolder.getContext().getAuthentication(), object, attributes);
InterceptorStatusToken token = super.beforeInvocation(object);
try{
object.getChain().doFilter(object.getRequest(), object.getResponse());
}finally{
super.afterInvocation(token, null);
}
}
public FilterInvocationSecurityMetadataSource getSecurityMetadataSource(){
return this.securityMetadataSource;
}
public void setSecurityMetadataSource(FilterInvocationSecurityMetadataSource securityMetadataSource) {
this.securityMetadataSource = securityMetadataSource;
}
@Override
public void destroy() {
}
@Override
public Class<?> getSecureObjectClass() {
return FilterInvocation.class;
}
@Override
public SecurityMetadataSource obtainSecurityMetadataSource() {
return this.securityMetadataSource;
}
}