auto-login 用户在后端打开应用程序时

auto-login user when reopening app in Backand

我有一个简单的 Backand 和 Ionic 应用程序,我希望用户登录一次,之后不再登录,就像 Facebook 应用程序一样。 因此,一旦用户登录,我就会收到来自 Backand 的令牌。据我所知,我假设我必须将该令牌保存在 localStorage 中(我正在做,并且正在工作)。但是从那时起,我不明白我需要做什么才能在用户再次访问时重新登录。

我已经尝试在我的 angular "run" 方法中查找本地存储中的现有令牌,如果存在,我将其粘贴到我的 http headers 中。 (认证服务中存在以下函数,在"run"方法中被调用)

self.checkExistingUser = function() {
  if ($localStorage.user_token) {
    $http.defaults.headers.common.Authorization = $localStorage.user_token;
    Backand.user.getUserDetails()
        .then(function (response) {
            // Do stuff
        }
    console.log('Token found, logging in user');
  }
};

我假设 "getUserDetails()" 调用会解释我刚刚添加的授权 header。但这就是我的误解;事情不是这样的。

所以我的问题是:如何使用该令牌自动登录返回的(现有)用户?我似乎无法在 Backand 文档中找到用于该目的的任何函数。

提前致谢!

使用后端 Vanilla SDK,此代码:

backand.user.getUserDetails(false)
  .then(res => {
    console.log(res.data);
  })
  .catch(err => {
    console.log(err);
  });

如果他通过身份验证,将获取用户详细信息,否则将获取 null。 所以你不需要再次登录用户。 false 确保它在内部检查它而不联系后端。您应该围绕它构建您的应用程序。

Kornatzky,你的评论让我找到了问题的答案。

问题是我将我的 appNameanonymousTokensignUpToken 包含在初始化 (BackandProvider.init) 中。删除 anonymousToken 并添加 useAnonymousTokenByDefault:false 解决了问题。

getUserDetails 现在 returns 我当前登录的用户而不是 Guest 对象。感谢您的帮助!