如何验证以URL形式传递的令牌

时间:2018-12-14 12:57:43

标签: angular

我正在填写重设密码的表格。

因此,用户接收并发送电子邮件,单击将其发送到页面的按钮以重置密码。

网址可以是:

http://localhost:4200/password/reset?token=YyG30e4YyZqvbxu5Q99AhwUOAuEywD

http://localhost:4200/password/reset/YyG30e4YyZqvbxu5Q99AhwUOAuEywD

我更喜欢第一个,因为令牌不代表任何实体。

然后,当我提交表单时,我会这样做:

ngOnInit() {
    let token = this.route.snapshot.queryParamMap.get('token');
    this.resetForm = this.formBuilder.group({
      email: ['', Validators.required],
      password: ['', Validators.required],
      password_confirmation: ['', Validators.required],
      token: ['', Validators.required]
    }, {validator: this.matchingPasswords('password', 'password_confirmation')});
    this.returnUrl = '/dashboard';
  }

但是令牌仍然不是formbuilder的一部分,因此它将失败。

我应该怎么做

2 个答案:

答案 0 :(得分:0)

将formbuilder中的token值设置为queryParams中的token。

ngOnInit() {
let token = this.route.snapshot.queryParamMap.get('token');
this.resetForm = this.formBuilder.group({
  email: ['', Validators.required],
  password: ['', Validators.required],
  password_confirmation: ['', Validators.required],
  token: [token, Validators.required]
 }, {validator: this.matchingPasswords('password', 'password_confirmation')});
 this.returnUrl = '/dashboard';
 }

答案 1 :(得分:0)

另一种可能性是拥有当前用户令牌的单身用户服务。

为简化请求,可能考虑使用http拦截器将令牌附加到每个请求。此外,用于身份验证的令牌不是随http头“ Authorization”一起传送吗?