在ember simple auth中将数据保存在browers的localstorage中

时间:2016-02-07 21:14:14

标签: javascript ember.js ember-cli ember-simple-auth ember-cli-addons

我已经使用ember-simple-auth进行fb登录。我可以获取fb的access_token并将令牌发送到我的服务器以交换服务器令牌。这样可以正常工作并且我可以使我的转换到用户供稿页面。但是我面临的问题是第一次使用。我必须在将它们带到他们的供稿屏幕之前向他们展示一些入职屏幕。从下次我可以跳过他们的入职流程。

torii.js

export default Torii.extend({
  torii: service('torii'),

  authenticate() {
    return new RSVP.Promise((resolve, reject) => {
      this._super(...arguments).then((data) => {
        console.log(data.accessToken);
        raw({
          url:      'http://example.co.in/api/socialsignup/',
          type:     'POST',
          dataType: 'json',
          data:     { 'access_token':data.accessToken,'provider':'facebook'}
        }).then((response) => {
          console.log(response.token);
          resolve({
            // jscs:disable requireCamelCaseOrUpperCaseIdentifiers
            access_token: response.token,
            // jscs:enable requireCamelCaseOrUpperCaseIdentifiers
            provider: data.provider
          });
        }, reject);
      }, reject);
    });
  }
});

我从服务器获得的响应是​​这样的。

对于初次使用者。

{access_token:'abcd...',signup_done:false}

当Signup_done为false时,我必须向用户显示入职者屏幕并向服务器发出POST请求" http://example.co.in/api/post/signupdone"

普通用户

{access_token:'abcd...',singup_done:true}

这一次,我只需将用户移动到跳过屏幕即可进入屏幕。

我想将singup_done从服务器保存到我的cookie或浏览器本地存储(不确定)。所以我可以在我的把手,控制器,模型,组件中使用这个值。我也愿意接受其他建议来实现这个目的用简单的方法。请使用代码示例。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以通过设置会话data来保存数据:

this.get('session').set('data.signupDone', true);

那样signupDone将被保留(同样在会话失效时)。当然,如果用户在另一个浏览器中登录,数据将不再存在,那么您应该将该属性存储在服务器端的资源中。