我有这个var context = loopback.getCurrentContext();
,它在context.active.acccessToken下返回我调用中使用的当前Token(在Explorer中测试)。
现在,当尝试使用Passport组件时,我从server.js示例git中复制了代码,并将其放在我的boot/aa-scripts.js中context.active变量为空{}。
// Passport configurators..
var loopbackPassport = require('loopback-component-passport');
var PassportConfigurator = loopbackPassport.PassportConfigurator;
var passportConfigurator = new PassportConfigurator(app);
// attempt to build the providers/passport config
var config = {};
try {
config = require('../../providers.json');
} catch (err) {
console.trace(err);
process.exit(1); // fatal
}
// The access token is only available after boot
app.middleware('auth', loopback.token({
model: app.models.AccessToken
}));
app.middleware('session:before', loopback.cookieParser(app.get('cookieSecret')));
app.middleware('session', loopback.session({
secret: 'kitty',
saveUninitialized: true,
resave: true
}));
passportConfigurator.init();
passportConfigurator.setupModels({
userModel: app.models.Member,
userIdentityModel: app.models.UserIdentity,
userCredentialModel: app.models.UserCredential
});
for (var s in config) {
var c = config[s];
c.session = c.session !== false;
passportConfigurator.configureProvider(s, c);
}
var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;
app.get('/auth/account', ensureLoggedIn('/'), function(req, res, next) {
res.send(req.user);
});
我已经注释掉了复制的代码的一部分,而给我带来麻烦的部分是:
// The access token is only available after boot
app.middleware('auth', loopback.token({
model: app.models.AccessToken
}));
app.middleware('session:before', loopback.cookieParser(app.get('cookieSecret'));
app.middleware('session', loopback.session({
secret: 'kitty',
saveUninitialized: true,
resave: true
}));
我已经尝试了AccessToken和AccessToken
我缺少什么?
您可能需要先将与用户相关的模型附加到数据源:
app.models.AccessToken.attachTo(dataSource);
由于我使用的是Angular应用程序,我最终评论了这3行
app.middleware('auth', loopback.token({
model: app.models.AccessToken
}));
一切似乎都很顺利。