16

我已经使用 JWT 开发了基于令牌的 Spring Security,在 git https://github.com/szerhusenBC/jwt-spring-security-demo中引用了这个项目。现在我需要在我的应用程序中登录 Facebook。对于社交登录,我找到了另一个网页https://ole.michelsen.dk/blog/social-signin-spa-jwt-server.html,它解释了必须如何进行社交登录。

在正常登录时,我的 JWT 项目会根据用户名、密码、到期日期和创建时间创建一个令牌。每次令牌到来时,都会检索并比较上述字段中的所有值以验证令牌,然后提供服务。我有两个问题:

  1. 在社交登录中,不会创建密码。将从 facebook 收到一个令牌(我的前端会这样做)。我必须验证令牌是否有效。我应该如何在 JWT 中做到这一点?
  2. 根据文章验证后,我应该创建自己的令牌以供将来参考。现在,facebook登录没有密码。如何创建令牌?

让我知道是否有任何好的网站可用于在 Spring Boot 应用程序中使用 JWT 进行社交登录。

4

2 回答 2

4
于 2017-07-12T14:57:16.527 回答
3

考虑从您的 jwt 中删除密码字段。Facebook 可以为您提供电子邮件和姓名,以便将其用于有效负载。这是我的例子。

userSchema.methods.generateJwt = function() {
  var expiry = new Date();
  expiry.setDate(expiry.getDate() + 7);

  return jwt.sign(
    {
      _id: this._id,
      email: this.email,
      name: this.name,
      exp: parseInt(expiry.getTime() / 1000)
    },
    jwt_secret
  );
};
于 2018-03-01T02:19:02.163 回答