Angular2 JWT认证 - JWT必须分为3部分?

时间:2016-03-28 15:37:39

标签: angular passport.js jwt

我正在使用AngularJS 2开发一个简单的MEAN堆栈应用程序。我正在使用passportJS + jwt strategy帮助程序库{/ 3}}。

这是我的Angular Code,它处理登录代码。我已经测试了API并且它可以工作(与邮差)。

//login.component.ts:
 onSubmit(credentials):void {
      console.log("on SUbmit here");
    this._userService.login(credentials.email, credentials.password)
    .subscribe((result) => {
      if (result) {
        console.log("Link to Todo?");
        this._router.navigate(['TodoComponent']);
      }
    });
  }

//user.service.ts:
  signUp(firstName, lastName, email, password) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');

      let user = new URLSearchParams();
        user.set('email', email);
        user.set('password', password);
        user.set('firstName', firstName);
        user.set('lastName', lastName);

    return this._http
      .post('/signup', user.toString(), { headers })
      .map(res => res.json())
      .map((res) => {
        console.log(res.success);
        return res.success;
      });
  }

但是,当我提交登录按钮时,我收到此错误:

  

未捕获(承诺):错误:JWT必须有3个部分

angular2-jwt

我应该怎样做才能确保以正确的格式提供JWT并避免这些错误?

2 个答案:

答案 0 :(得分:2)

你的JWT是什么样的?您的JWT应该2 dots将字符串拆分为3 parts。通常,第一部分和第二部分以ey开头,{$compile的base64编码值。

您可以将其粘贴到此处:http://jwt.io/

此网站可以告诉您它是否是有效的JWT并且可以解码其内容,因此您可以证明它是正确的。

答案 1 :(得分:0)

我有同样的错误。我解决了错误。 在auth0中创建新API。给出唯一标识符名称。我拿了“NodeAPI” 我在下面提到了配置代码。

auth0 = new auth0.WebAuth({ 
             clientID: 'Hg3EhAWKgrPrX5UNGqFQA5vTbVGWF', 
             domain: 'xyz.auth0.com', 
             responseType: 'token id_token', 
             audience: 'NodeAPI', 
             redirectUri: 'http://localhost:4200/callback', 
             scope: 'openid' });

很高兴为您提供帮助