我有一个用户可以登录或注册的应用程序。完成任一操作后,我想为应用程序的其余部分创建一个用户会话,直到窗口关闭为止。我使用的用户模型如下:
export default DS.Model.extend({
apiKey: DS.attr('string'),
userId: DS.attr('integer'),
firstName: DS.attr('string'),
lastName: DS.attr('string'),
birthday: DS.attr('date'),
gender: DS.attr('string'),
city: DS.attr('string'),
state: DS.attr('string'),
email: DS.attr('string')
});
如何创建此用户会话以及如何访问“当前用户”#39;在我申请的其余部分?
---编辑1 ---
我已经安装了ember-simple-auth并且有一个看起来像这样的初始化程序:
export default {
name: 'session',
before: 'simple-auth',
initialize: function(container) {
Session.reopen({
currentUser: function() {
var user_id = this.get('userId');
if (!Ember.isEmpty(user_id)) {
return container.lookup('store:main').find('user', user_id);
}
}.property('user_id')
});
}
};
我的登录路线是' users.login'所以在我的环境中。我有:
ENV['simple-auth'] = {
authenticationRoute: 'users.login'
};
在登录后的页面上,我试图查看currentUser对象是否已保留,以便我注销此行:
console.log('CURRENT USER: ' + self.get('session.currentUser'));
但我没有定义会话,但是不应该在全局访问会话变量吗?
我也试过console.log('CURRENT USER: ' + self.get('initializers.session.currentUser'));
但是未定义。
答案 0 :(得分:1)
我建议您延长它,而不是重新开放Session
。
以下是我的解决方案:
// objects/my-session.js
import Ember from 'ember';
import Session from 'simple-auth/session';
export default Session.extend({
user: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return this.container.lookup('store:main').find('user', userId);
}
}.property('user_id')
});
// initializers/my-authentication.js
import MySession from '../objects/my-session';
export var initialize = function(container) {
container.register('session:custom', MySession);
};
export default {
name: 'authentication',
before: 'simple-auth',
initialize: initialize
};
您的验证者和授权人也是自定义的吗?