我的 Ember 应用需要使用 Google OAuth 2 对用户进行身份验证。我希望能够将身份验证令牌存储在数据库中,因此我决定使用Passport for Node 将身份验证过程放在服务器端。
当服务器上的身份验证结束时,如何让您的 Ember 应用程序知道 Passport“会话”?
我的 Ember 应用需要使用 Google OAuth 2 对用户进行身份验证。我希望能够将身份验证令牌存储在数据库中,因此我决定使用Passport for Node 将身份验证过程放在服务器端。
当服务器上的身份验证结束时,如何让您的 Ember 应用程序知道 Passport“会话”?
一旦通过护照过程进行身份验证,客户端在与服务器的所有通信中都会发送用户会话及其请求。如果您希望您的 Handlebars 模板以用户的存在为条件,我的方法是在服务器上设置以下请求处理程序:
app.get("/user", function (req,res) {
if (req.isAuthenticated()) {
res.json({
authenticated: true,
user: req.user
})
} else {
res.json({
authenticated: false,
user: null
})
}
})
在我的 Ember 路线中,我执行以下请求:
App.ApplicationRoute = Ember.Route.extend({
model: function () {
return $.get("/user").then(function (response) {
return {user: response.user};
})
}
});
因此,在我的 Handlebars 模板中,我可以执行以下操作:
{{#if user}}
<p>Hello, {{user.name}}</p>
{{else}}
<p>You must authenticate</p>
{{/if}}