从Angular的响应头中获取JWT

时间:2019-10-27 15:07:15

标签: angular

我有一个Spring后端和一个Angular前端。我正在尝试完成在Angular中创建登录名。使用邮递员,我可以获得jwt和登录名,并且所有路由都可以工作。在登录时,可以用斜角在JWt响应头中看到。我的问题是如何获取它并将其存储在localStorage或其他任何东西上?我的响应标头如下所示:https://ibb.co/RgrGznR

在尝试了很多不同的东西之后,我的代码此刻有些混乱。我可能在某个时候已经很接近了,而沮丧的是,我又回到了非常基本的东西,至少给了我Status 200和响应头中的jwt。

这是我的服务班级:

    export class DataService {
    httpOptions = {
        headers: new HttpHeaders({ 'Content-Type': 'application/json'})
      };

     constructor(private http: HttpClient) {

   }

  public login(username: string, password: string) {
    return this.http.post<any>('http://localhost:8080/login', {username, 
password});
  }

和登录组件:

export class LoginComponent implements OnInit {

loginForm: FormGroup;
invalidLogin = false;

constructor(private router: Router, private service: DataService) { }

ngOnInit() {
  this.loginForm = new FormGroup({
  username: new FormControl(''),
  password: new FormControl('')
 });
}

doLogin() {
 const username = this.loginForm.get('username').value;
 const password = this.loginForm.get('password').value;

 this.service.login(username, password).subscribe(
  data => {

  }

 );
}
}

对不起,我可能已经阅读了我需要做的事情,只是没有正确地实现它。.我对Java的后端非常满意。.但是我并没有真正弄乱角度太大。预先谢谢你。

1 个答案:

答案 0 :(得分:1)

在您的DataService中,获得访问标头的完整响应:

$"{Assembly.GetExecutingAssembly().GetName().Name}.{nameof(Level1Namespace)}.{nameof(Level2Namespace)}"

您可以在此处保存令牌,并在后续请求时将其添加到标头中。