【问题标题】:unable to implement ouath2 on loopback无法在环回上实现 ouath2
【发布时间】:2017-03-20 12:32:47
【问题描述】:

我想使用环回实现一个 oauth2 服务器。我之前使用 express 完成了它,并且效果很好,但是使用环回我遇到了一些问题。这是 oauth2orize 的代码: var app = require('../../server/server'); //需要server.js,就像在任何node.js应用程序中一样

var User = app.models.user;
var Client = app.models.client;
var Token = app.models.token;
var Code = app.models.code;

var server = oauth2orize.createServer();    

// Register serialialization function
server.serializeClient(function(client, callback) {
  return callback(null, client._id);
});

// Register deserialization function
server.deserializeClient(function(id, callback) {
  Client.findOne({ _id: id }, function (err, client) {
    if (err) { return callback(err); }
    return callback(null, client);
  });
});
// User authorization endpoint
exports.authorization = [  
  server.authorization(function(clientId, redirectUri, callback) {
    console.log('At Authorization endpoint');
    var Client = app.models.client;
    Client.findOne({where :{ appId: clientId }}, function (err, client) {
      if (err) { return callback(err); }
      console.log("Found client : "+client);
      return callback(null, client, redirectUri);
    });
  })]

当我调用授权端点时,我收到一个错误: 错误:无法序列化客户端。使用 serializeClient() 注册序列化函数 但是我已经实现了 server.serializeClient 和 server.deserializeClient 方法

【问题讨论】:

  • 应该exports.authorisation 是一个对象而不是一个数组? IE。 exports.authorization = {...
  • 另外,这不是一个答案,但你可以考虑 Loopback oauth2 实现 loopback.io/doc/en/lb2/OAuth-2.0.html 我没试过,所以不能保证

标签: node.js oauth oauth-2.0 loopbackjs


【解决方案1】:

我最近遇到了同样的问题并解决了这个问题(在我的情况下)。问题是我的客户端模型没有id 字段。我有一个clientId 字段,但似乎oauth2orize 模块也特别需要一个id 字段。有点蹩脚,但并不难实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多