与此相关:上一期
我已经定义了这个模型:
var customer = mongoDev.createModel('customer',
{
id: {
type: String,
id: true
},
firstName: String,
lastName: String,
badge: String,
email: String
},
{
strict: true,
base: "User"
});
如果我不做任何其他事情,我将获得我期望的所有额外的用户端点(登录、注销、accessTokens等)。然而,我的结果从登录给我:
{
"id": "ssOzK8EswH...",
"ttl": 1209600,
"created": "...",
"userId": "53c6f5d4769ed..."
}
似乎userId应该是customerId。我已经删除了用户&从models.json中获取模型。所以我甚至不知道它是从哪里获得关系信息的,除非它在某个地方被烤熟了。无论如何,如果我尝试调用/customer/53c6f5d4769ed...
并在报头中提供令牌,我会得到401。从技术上讲,Id是正确的,只是错误的FK名称。
我试过
var accessToken = mongoDev.createModel('accessToken',{},{base: "AccessToken"});
accessToken.belongsTo(customer, {as: 'customer', foreignKey: 'customerId'});
我认为这为我改变了FK名称,但在呼叫后续端点时,我仍然得到401。
这是我自己的地方。我的问题是:
使用代码优先,而不是使用"用户"模型为我的authN我如何连接accessToken(也是代码优先)?而扭转将是我计划有多个authN模型(即客户,供应商,员工)。所以真正的问题是我如何连接这个,以允许每种类型的"用户"获得自己的accessTokens??
清晰如泥??: -)
环回船基本用户和AccessToken模型。它们可以被扩展以自定义行为,就像你在models.json中看到的那样。然后这些模型就可以被引用为app.models.user和app.models.accessToken。userId是访问令牌到用户模型的外键,它可以重命名为'customerId'。
要使用'$owner'角色强制acl,模型实例需要有一个'owner'或'userId'属性,或者一个'belongsTo'关系到用户模型的子类。
我建议你把问题分成几个小问题。请随意发布到https://groups.google.com/forum/#!forum/loopbackjs。
所以我甚至不知道它从哪里获得的关系信息,除非它在某处被烘烤。
关系信息包含在User
模型中。由于您的customer
正在扩展User
,因此它也将继承这些关系。
我试过
var accessToken = mongoDev. varcreateModel (accessToken,{},{基地:"accessToken"});accessToken。belongsTo(customer, {as: 'customer', foreignKey: 'customerId'});
不管你的用户模型是什么,外键必须是userId
。
var accessToken = mongoDev.createModel('accessToken',{},{base: "AccessToken"});
accessToken.belongsTo(customer, {as: 'user', foreignKey: 'userId'});
当我试图写一个示例应用程序来重现这个问题时,应用程序对我来说分叉很好(使用memory
和mongodb
连接器进行测试)。
var loopback = require('loopback');
var customer = loopback.createModel('customer',
{
id: { type: String, id: true },
firstName: String,
lastName: String,
badge: String,
email: String
},
{
strict: true,
base: "User"
});
var app = loopback();
app.dataSource('db', {
connector: 'mongodb' // or memory
});
app.model(loopback.AccessToken, { dataSource: 'db' });
app.model(customer, { dataSource: 'db' });
app.use('/api', loopback.rest());
app.use('/explorer', require('loopback-explorer')(app));
app.listen(3000, function() {
console.log('Explore at http://localhost:3000/explorer');
});
模块版本:loopback@1.10.0
loopback-datasource-juggler@1.7.1
loopback-connector-mongodb@1.4.1
使用代码优先,而不是使用"用户"模型为我的authN我如何连接accessToken(也是代码优先)?
参见上面的例子
问题是,我计划有多个authN模型(即客户、供应商、员工)。所以真正的问题是我如何连接这个,以允许每种类型的"用户"获得自己的accessTokens??
我不认为环回现在支持,请打开一个github问题请求这样的功能。