在Angular中,可以使用HttpClient来发送POST请求以进行用户身份验证。在Spring中,可以使用Spring Security来配置身份验证和授权。
以下是一个简单的实例,它在Angular中验证用户名和密码,然后将其发送到Spring后端以进行身份验证。
在Angular中:
auth.service.ts文件:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class AuthService {
private SERVER_URL = 'http://localhost:8080/api/auth';
constructor(private httpClient: HttpClient) { }
public login(username: string, password: string) {
return this.httpClient.post(`${this.SERVER_URL}/login`, { username, password });
}
}
login.component.ts文件:
import { Component } from '@angular/core';
import { AuthService } from '../auth.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent {
public username: string;
public password: string;
constructor(private authService: AuthService) { }
public login() {
this.authService.login(this.username, this.password)
.subscribe((response) => {
console.log(response);
});
}
}
在Spring中:
SecurityConfig.java文件:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JWTTokenProvider jwtTokenProvider;
@Autowired
private UserDetailsService userDetailsService;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(12);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeRequests().antMatchers("/api/auth/**").permitAll();
http.authorizeRequests().anyRequest().authenticated();
http.apply(new JWTTokenFilterConfigurer(jwtTokenProvider));
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Override
@Bean