要实现Angular6和Spring Boot的基本身份验证,可以按照以下步骤进行:
创建一个Spring Boot项目,添加Spring Security依赖项。
org.springframework.boot
spring-boot-starter-security
创建一个Spring Security配置类来配置身份验证规则和权限。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/public").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER");
}
}
创建一个RESTful控制器来处理请求。
@RestController
public class ApiController {
@GetMapping("/api/public")
public String publicApi() {
return "This is a public API.";
}
@GetMapping("/api/private")
public String privateApi() {
return "This is a private API.";
}
}
创建一个Angular6项目,使用HttpClient模块来发送HTTP请求。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http: HttpClient) { }
getPublicApi() {
return this.http.get('/api/public');
}
getPrivateApi() {
return this.http.get('/api/private');
}
}
在Angular6组件中使用ApiService来调用API。在需要进行身份验证的API请求中,添加Basic Authentication头部。
import { Component } from '@angular/core';
import { ApiService } from './api.service';
@Component({
selector: 'app-root',
template: `
`
})
export class AppComponent {
constructor(private apiService: ApiService) { }
getPublicApi() {
this.apiService.getPublicApi().subscribe(response => {
console.log(response);
});
}
getPrivateApi() {
this.apiService.getPrivateApi().subscribe(response => {
console.log(response);
});
}
}
这样,当调用私有API时,会自动弹出一个身份验证对话框来进行身份验证。输入正确的用户名和密码后,就可以访问私有API了。公共API可以直接访问,不需要身份验证。