我一直在尝试使用session.currentUser
,id
和email
属性创建points
媒体资源。
我引用Custom authenticator with Ember simple auth + Ember CLI和How to store the user in a session,但我无法弄清楚这些部分是如何组合在一起的。
我使用的是Ember CLI。在我的index.html
中,我有:
window.ENV['simple-auth'] = {
authorizer: 'simple-auth-authorizer:devise',
session: 'session:custom'
};
在initializers/custom-session.js
中,我有:
import Session from 'simple-auth/session';
import Devise from 'simple-auth-devise/authenticators/devise';
export default {
name: 'session:custom',
before: 'simple-auth',
initialize: function(container) {
container.register('session:custom', Devise);
Session.extend({
currentUser: function() {
var id = this.get('id');
var email: this.get('user_email');
var points: this.get('points');
if (!Ember.isEmpty(id)) {
return this.store.createRecord('user', {
id: id,
email: email,
points: points
});
}
}.property('id')
});
}
};
这在很多方面对我来说都是错误的,但经过几个小时的努力才能完成这项工作,这至少表明了我想要完成的任务。
我非常感谢任何帮助。提前谢谢!
答案 0 :(得分:3)
我明白了! :)
的index.html:
window.ENV['simple-auth'] = {
authorizer: 'simple-auth-authorizer:devise',
session: 'session:withCurrentUser'
};
初始化/定制-session.js:
import Session from 'simple-auth/session';
var SessionWithCurrentUser = Session.extend({
currentUser: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return this.container.lookup('store:main').find('user', userId);
}
}.property('user_id')
});
export default {
name: 'customize-session',
initialize: function(container) {
container.register('session:withCurrentUser', SessionWithCurrentUser);
}
};
希望这有助于其他人。