【问题标题】:ember-simple-auth custom authenticator using ember-data使用 ember-data 的 ember-simple-auth 自定义身份验证器
【发布时间】:2014-12-18 16:31:25
【问题描述】:

我正在为具有嵌入式 Web 界面的 C 程序创建一个前端,该界面具有一个简单的 REST api。我想将 ember-simple-auth 与与该 api 端点对话的客户身份验证器和授权器一起使用。

var Authenticator = AuthenticatorBase.extend({
    restore: function(data) {
       ...
    },

    authenticate: function(credentials) {
        var _this = this;
        return new Ember.RSVP.Promise(function(resolve, reject) {
            ... ??? ...
        });
    },
    
    invalidate: function() {
        var _this = this;
        return new Ember.RSVP.Promise(function(resolve) {
            ... ??? ...
        });
    },
});

在 ember-simple-auth 示例中,我看到自定义身份验证器实现使用 Ember.$.ajax 像这样发布到服务器:

authenticate: function(credentials) {
    var _this = this;
    return new Ember.RSVP.Promise(function(resolve, reject) {
        Ember.$.ajax({
            url:         _this.tokenEndpoint,
            type:        'POST',
            data:        { username: credentials.identification,
                           password: credentials.password },
        }).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-data(我认为)—— ember 和 ember-data 的新手,所以不清楚。假设我的 API 端点是 /session,那么使用 ember-data 我的身份验证方法会是什么样子?

在相关说明中:我正在使用 ember-cli 并运行 ember 服务器进行开发。如何告诉 ember-data 指向我的基于 C 的服务器以进行 REST 调用?我正在尝试这个,但似乎不会影响 ember-data 调用 - 它们只是转到 ember 服务器:

// app/adapters/application.js
import DS from "ember-data";

export default DS.RESTAdapter.extend({
    host: 'localhost:48880',
    namespace: '/'
});

【问题讨论】:

  • 您使用DS.Adapter(REST 或 JSON 等)emberjs.com/api/data/classes/DS.Adapter.html“告诉”ember-data 在哪里执行 API 调用,就像在您的 sn-p 中一样,为什么不工作?您遇到了什么错误?

标签: ember.js ember-data ember-cli


【解决方案1】:

当您想使用 Ember Data 时,您需要有一个 Session 左右的模型,以便在您创建该模型的实例时触发 POST/sessions。不过,我实际上认为这没有任何意义,在这种情况下,您并没有真正从使用 Ember Data 中获得任何好处 - 我建议简单地使用普通的 Ember.$.ajax 并将 Ember Data 用于您的实际模型数据。

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多