将数据保存在 ember 简单身份验证中的浏览器本地存储中

Save data in localstorage of browers in ember simple auth

本文关键字:浏览器 存储 身份验证 保存 数据 存在 ember 简单      更新时间:2023-09-26

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

鸟居.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为假时,我必须向用户显示入职屏幕并向服务器"http://example.co.in/api/post/signupdone"发出 POST 请求

对于普通用户

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

这次我只需要将用户移动到他们的提要屏幕,跳过载入屏幕。

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

您只需设置即可将数据保存在会话data中:

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

这样signupDone将被保留(当会话失效时也是如此(。当然,如果用户在另一个浏览器中登录,则该数据将不再存在,因此您可能应该将属性存储在服务器端的资源中。