【发布时间】: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