Node.js和express - 通过OAuth进行身份验证

时间:2017-02-15 08:36:02

标签: node.js express oauth

对于我正在开发的应用程序,它需要大量的实时处理,所以我们决定使用Nodejs并使用Express来构建像Laravel这样的应用程序。

我遇到的问题是验证用户身份。因为,我们有一个OAuth服务器(内置Lumen)来验证用户并为移动应用程序提供API。这个应用程序将自己读/写数据,并不会真正使用API​​。

因此可以通过我们的OAuth验证用户(存储返回的密钥)吗?我在Laravel

中寻找类似于loginusingid的东西

1 个答案:

答案 0 :(得分:1)

从github获取oAuth2和Passport https://github.com/jaredhanson/passport-oauth2

配置startegy

passport.use(new OAuth2Strategy({
    authorizationURL: 'https://www.example.com/oauth2/authorize',
    tokenURL: 'https://www.example.com/oauth2/token',
    clientID: EXAMPLE_CLIENT_ID,
    clientSecret: EXAMPLE_CLIENT_SECRET,
    callbackURL: "http://localhost:3000/auth/example/callback"
  },
  function(accessToken, refreshToken, profile, cb) {
    User.findOrCreate({ exampleId: profile.id }, function (err, user) {
      return cb(err, user);
    });
  }
));

现在,您可以在全局范围

上验证端点
express.use(passport.authenticate('oauth2'));

或路线特定地点

app.get('/auth/example',
        passport.authenticate('oauth2'),
        function(req, res) {
   // Your code here
 });