我对使用loopback和passport(和AngularJS)创建应用程序很感兴趣。
我看到this示例应用已经启动并运行,我可以通过谷歌登录。我不太了解的是这应该如何与AngularJS应用程序一起使用。使用示例应用程序,一切都在服务器上完成(auth)。一旦我登录,这与客户端(AngularJS)和环回服务器之间所需的访问令牌有什么关系?我可以看到使用谷歌访问令牌和其他身份信息创建的用户,但是如何“连接”客户端所需的访问令牌(AngularJS)?
答案 0 :(得分:1)
我大部分也是从这开始的,但到目前为止我抓住了这个:
3rd party provider <--- OAuth token ---> Loopback app <--- LB Token ---> Client
用于与第三方提供商互动的OAuth令牌是通过护照提取的,到目前为止我从未需要与之互动。
基本上,一旦您使用OAuth登录,就必须生成LB令牌并将其提供给用户,以便进一步识别用户。
为此,我在serializeUser
中实现了一些自定义代码。我的自定义用户模型名为Client
app.serializeUser = function(userDataToSerialize, done) {
app.models.Client.create({
email: userDataToSerialize.email,
password: userDataToSerialize.password
},
function(err, user) {
if (err) return done(err);
app.models.Client.generateVerificationToken(user, function(err, token) {
if(err) return done(err);
done(null, {
userId: user.id,
accessToken: token
});
});
};
我创建了一个新客户端,然后为该用户生成一个令牌。使用令牌和用户ID调用done(null,..)
将允许护照将此数据放入会话中,因此应该可以在客户端访问。
这样,Angular应用程序应该能够获取用户ID和访问令牌,由Loopback正确识别,然后Loopback应用程序可以代表已识别的用户向第三方提供商发出请求。
希望这有帮助