【问题标题】:Ember-simple-auth custom authorizer not called未调用 Ember-simple-auth 自定义授权方
【发布时间】:2016-02-02 16:36:27
【问题描述】:

我正在尝试使用 ember-simple-auth 实现自定义身份验证,但我一开始就卡住了。我有 app/autheticators/digest.js

import Base from 'ember-simple-auth/authenticators/base';
import Ember from 'ember';

export default Base.extend({
  restore(data) {
    //
  },
  authenticate(email, password) {
    console.log(email, password);
    return new Ember.RSVP.Promise(function(resolve, reject) {
      Ember.run(function() {
          resolve({email: email, password: password});
        });
    });
  },
  invalidate(data) {
    //
  }
});

app/authorizers/digest.js

import Base from 'simple-auth/authorizers/base';  
import Ember from 'ember';

export default Base.extend({  
  header: function() {
    return "test-digest";
  },

  authorize: function(sessionData, block) {
    console.log('authorize...');
    block('Authorization', this.get('header'));
  }
});

登录组件:

import Ember from 'ember';
import CryptoJS from 'npm:crypto-js';

export default Ember.Component.extend({
    session: Ember.inject.service('session'),
    actions: {
        login() {
            let { email, password } = this.getProperties('email', 'password');
            this.get("session").authenticate('autheticator:digest', 
                email, CryptoJS.SHA256(password).toString()).catch((reason) => {
                this.set('errorMessage', reason.error);
            });
        }
    }

});

正确调用了身份验证(我希望如此),但从未调用过授权方中的“授权”。我还尝试向 ENV 添加一些值:

  ENV['simple-auth'] = {
    authorizer: 'authorizer:digest',
    crossOriginWhitelist: ['http://prod-drunkedguru.rhcloud.com:80/'] // ['*'] I also tried
  }; 

但没有任何改变。我做错了什么?

附:我将 EmberJS 1.13.0 与 EAS 1.0 一起使用。

【问题讨论】:

  • 嗨,克拉巴尔。我有同样的问题。你能告诉我如何解决这个问题吗?我检查了marcoow的答案。但我很困惑如何将会话设置为 $.ajax。如果你有例子,你能告诉我吗?非常感谢。
  • 当然。接下来是: this.get('session').authorize('authorizer:digest', (headerName, headerValue) => { const headers = {}; headers[headerName] = headerValue; Ember.$.ajax({ url : "url", 方法: "GET", 数据: { }) }, headers: headers }).then(function(result) { // }); });

标签: ember.js ember-simple-auth


【解决方案1】:

我假设您使用的是 ESA 1.0。在该版本中,不再自动调用授权人,但您需要手动调用它。不过,您可以使用 DataAdapterMixin 自动授权 Ember Data 请求。有关迁移到 1.0 的指导,请参阅此博客文章:http://log.simplabs.com/post/131698328145/updating-to-ember-simple-auth-10

【讨论】:

  • 谢谢回答。它适用于 Ember.$.ajax 请求吗?
  • 确保您可以授权各种请求 - 查看文档:ember-simple-auth.com/api/classes/…
  • 如果您使用Ember.$.ajax,您需要手动执行,是的 - 在实际应用程序中,您应该有一个Ember.Service,当然它包含Ember.$.ajax 并实现授权。跨度>
  • 感谢您的帮助。我会尽快尝试。
  • 是的!这真的很工作。很难找到使用 ESA =(. 的未过时示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 2016-01-14
  • 2018-03-30
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多