【问题标题】:can I use ember-simple-auth with express/passport session domain cookies我可以将 ember-simple-auth 与 express/passport 会话域 cookie 一起使用吗
【发布时间】:2014-07-25 20:06:07
【问题描述】:

我有一个项目正在进行,我一直在使用服务器端通过 express/passport 域 cookie 处理我的身份验证和授权,这种方式通过来回发送 sid cookie 自动神奇地处理状态。

我没有在客户端上构建太多的身份验证管理,我只是获取用户数据,这些用户数据会在服务器视图中作为全局 js 对象引导我。我想在 ember 中更好地处理这个问题,所以我开始实现 ember-simple-auth,我能够在那里很好地处理登录、状态等,但它似乎总是依赖于令牌策略。

现在我的代码看起来像这样,如您所见,我必须解决一个带有令牌对象的承诺才能使其工作,但我想要的策略不需要令牌。

authenticate: function(credentials) {
          var _this = this;
          return new Ember.RSVP.Promise(function(resolve, reject) {
              Ember.$.ajax({
                  url: _this.tokenEndpoint,
                  type: 'POST',
                  data: JSON.stringify({
                      email: credentials.identification,
                      password: credentials.password
                  }),
                  contentType: 'application/json'
              }).then(function(response) {

                  Ember.run(function() {
                      resolve({
                          token: response.session.token
                      });
                  });
              }, function(xhr, status, error) {
                  var response = JSON.parse(xhr.responseText);
                  Ember.run(function() {
                      reject(response.error);
                  });
              });
          });
      },

我的问题是 ember-simple-auth 是否可以适应 express/passport 域 cookie 或者我是否必须更改我的服务器以使用承载策略或 oauth2 或其他东西。

谢谢。

【问题讨论】:

    标签: ember.js ember-simple-auth


    【解决方案1】:

    Ember Simple Auth 本身不需要令牌。在大多数情况下,尽管“授权者”需要一个令牌才能将其注入到您的 API 服务器的请求中(参见此处:http://ember-simple-auth.simplabs.com/ember-simple-auth-api-docs.html#SimpleAuth-Authorizers-Base)。如果您使用 cookie,则实际上不需要授权人,因为无论如何 cookie 都会发送到服务器,让它识别经过身份验证的用户。在这种情况下,您可以简单地解决例如{ authenticated: true } 来自 authenticate 方法并在 restore 方法中检查该值:

    restore: function(data) {
      return new Ember.RSVP.Promise(function(resolve, reject) {
        if (data.authenticated) {
          resolve(data);
        } else {
          reject();
        }
      });
    }
    

    【讨论】:

    • 感谢 Marco 的回答和出色的插件。我有它的工作。我很快就会写一个教程。
    • @mobetta 教程进展如何? :)
    • @mobetta 有关于教程的消息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多