如何在用户的电子邮件更改时重新授权用于ember-simple-auth-devise的会话
问题描述:
我正在使用ember-simple-auth-devise。如何在用户的电子邮件更改时重新授权用于ember-simple-auth-devise的会话
当用户登录时,会将用户的电子邮件和令牌添加到每个请求的标头中。
当用户更改他的电子邮件地址时,我可以更新会话的电子邮件,但是这也不会传播到标题。
什么是触发更新会话电子邮件和标题电子邮件的最佳方式?
答
这是我最后还是没买:
应用/会话/ custom.js
import Ember from 'ember';
import DS from 'ember-data';
import Session from 'simple-auth/session';
export default Session.extend({
currentUser: function() {
var userId = this.get('secure.userId');
if (!Ember.isEmpty(userId)) {
return DS.PromiseObject.create({
promise: this.container.lookup('store:main').find('user', userId)
});
}
}.property('secure.userId'),
// Update the session email when the user successfully changes their email.
updateEmail: Ember.observer('currentUser.email', function() {
var currentUserEmail = this.get('currentUser.email'),
sessionEmail = this.get('secure.email');
if(currentUserEmail && !this.get('currentUser.isDirty') && sessionEmail !== currentUserEmail) {
this.set('secure.email', currentUserEmail);
this.set('email', currentUserEmail);
}
}),
});
看来updateStore上的会话没有得到,当你设置“secure.email”叫但是当你设置'email'的时候它确实会被调用,但是只是设置'email'是不够的,因为updateStore使用'secure.email'来保存数据(电子邮件&令牌)。