4

我的 Ember 应用需要使用 Google OAuth 2 对用户进行身份验证。我希望能够将身份验证令牌存储在数据库中,因此我决定使用Passport for Node 将身份验证过程放在服务器端。

当服务器上的身份验证结束时,如何让您的 Ember 应用程序知道 Passport“会话”?

4

1 回答 1

4

一旦通过护照过程进行身份验证,客户端在与服务器的所有通信中都会发送用户会话及其请求。如果您希望您的 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}}
于 2013-10-04T14:26:30.557 回答