Ember.js 重新加载页面后,Ember简单身份验证会话内容丢失

Ember.js 重新加载页面后,Ember简单身份验证会话内容丢失,ember.js,ember-simple-auth,Ember.js,Ember Simple Auth,我创建了一个clean ember应用程序,安装了simple auth,并为facebook实现了一个自定义身份验证程序 我可以看到,我正在成功地从FB获取访问令牌,并且它被放入会话中。通过chrome ember扩展检查容器会话时,会显示会话已通过身份验证,并且访问令牌可见 但当我在浏览器中重新加载页面时,会话状态将丢失。这是预期的行为吗?我的自定义验证器是否做错了什么?验证器代码是直接复制和粘贴,再加上来自的一些console.log 谢谢,谢谢你的帮助 import Ember from

我创建了一个clean ember应用程序,安装了simple auth,并为facebook实现了一个自定义身份验证程序

我可以看到,我正在成功地从FB获取访问令牌,并且它被放入会话中。通过chrome ember扩展检查容器会话时,会显示会话已通过身份验证,并且访问令牌可见

但当我在浏览器中重新加载页面时,会话状态将丢失。这是预期的行为吗?我的自定义验证器是否做错了什么?验证器代码是直接复制和粘贴,再加上来自的一些console.log

谢谢,谢谢你的帮助

import Ember from 'ember';
import Base from 'simple-auth/authenticators/base';

export default Base.extend({
  restore: function (data) {
    return new Ember.RSVP.Promise(function (resolve, reject) {
      console.log('restore');
      if (!Ember.isEmpty(properties.accessToken)) {
        console.log('found access token '+properties.accessToken);
        resolve(properties);
      }
      else {
        console.log('no token found');
        reject();
      }
    });
  },
  authenticate: function (options) {
    return new Ember.RSVP.Promise(function (resolve, reject) {
      console.log('1');
      FB.getLoginStatus(function (fbResponse) {
        console.log('2');
        console.log(fbResponse);

        if (fbResponse.status === 'connected') {
          Ember.run(function () {
            console.log(fbResponse.authResponse.accessToken);

            resolve({accessToken: fbResponse.authResponse.accessToken});
          });
        }
        else if (fbResponse.status === 'not_authorized') {
          reject();
        }
        else {
          FB.login(function (fbResponse) {
            if (fbResponse.authResponse) {
              Ember.run(function () {
                console.log(fbResponse.authResponse.accessToken);

                resolve({accessToken: fbResponse.authResponse.accessToken});
              });
            }
            else {
              reject();
            }
          });
        }
      });
    });
  },
  invalidate: function (data) {
    return new Ember.RSVP.Promise(function (resolve, reject) {
      FB.logout(function (response) {
        Ember.run(resolve);
      });
    });
  }
});

验证器还原方法的参数称为data,但您正在检查properties.accessToken。无论如何,这应该会引发一个错误,因为那里的属性未定义。

谢谢,这似乎可以修复它,尽管我不知道为什么没有错误。不幸的是,我在我最初的项目中没有犯同样的错误,所以那里有一个不同的问题——我设法通过将它全部剥离并将代码复制回那里来解决这个问题。现在我有了这样的经验,轻松了一点。无论如何,谢谢你的帮助和耐心。