Я разрабатываю приложение Angular 6, для которого я использую Spring Boot для служб REST и использую базовую аутентификацию Spring Security для авторизации.
Проблема в том, что базовая аутентификация не работает, и она отображается всплывающимкаждый раз, когда я вхожу в приложение.Я использую перехватчик в угловом 6 для добавления заголовка авторизации.
Может кто-нибудь помочь, пожалуйста, где я иду не так?
Код:
@Injectable()
export class HttpTokenInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
let username=localStorage.getItem("username")
let password=localStorage.getItem("password")
const customReq = req.clone({
headers: req.headers.set("Authorization", "Basic " + btoa(username+":"+password) )
});
return next.handle(customReq);
}
constructor() { }
}
Ивесенний загрузочный код
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.httpBasic().and().authorizeRequests().antMatchers("/index.html", "/", "/home/**", "/login").permitAll()
.anyRequest().authenticated().and().csrf().disable().httpBasic();
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
final DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(encoder());
return authProvider;
}
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder(11);
}
}
Поскольку я новичок в Spring, пожалуйста, дайте мне знать, если вам нужны другие файлы.