【问题标题】:How to re-authorize the session for ember-simple-auth-devise when user's email changes当用户的电子邮件更改时,如何重新授权 ember-simple-auth-devise 的会话
【发布时间】:2015-09-25 18:10:34
【问题描述】:

我正在使用 ember-simple-auth-devise。

当用户登录时,用户的电子邮件和令牌会添加到每个请求的标头中。

当用户更改他的电子邮件地址时,我可以更新会话的电子邮件,但这也不会传播到标题。

触发会话电子邮件和标头电子邮件更新的最佳方式是什么?

【问题讨论】:

    标签: ember.js ember-simple-auth


    【解决方案1】:

    这是我最后所做的:

    app/sessions/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);
        }
      }),
    });
    

    似乎在设置 'secure.email' 时不会调用会话上的 updateStore,但在设置 'email' 时会调用它,但是,仅设置 'email' 是不够的,因为 updateStore 使用了 'secure .email' 保存数据(电子邮件和令牌)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      相关资源
      最近更新 更多