javascript-sdk icon indicating copy to clipboard operation
javascript-sdk copied to clipboard

可以把 AV.User._fetchUserBySessionToken 暴露出来吗?

Open L42y opened this issue 9 years ago • 7 comments

L42y avatar Nov 18 '16 02:11 L42y

目前好像没有这个方法,不过 有个公开的方法 AV.User.become(sessionToken) ,可以做同样的事情。不过需要注意的是 become 之后,这个 user 对象就会成为 currentUser。

aisk avatar Nov 18 '16 02:11 aisk

在服务端用 User.become 方法不妥啊,我就想要一个验证 session token 是否正确且没有副作用的方法

L42y avatar Nov 18 '16 03:11 L42y

最近刚增加了此方法:https://leancloud.github.io/javascript-sdk/docs/AV.User.html#isAuthenticated

aisk avatar Nov 18 '16 03:11 aisk

Sorry,👆 的方法在 JS SDK 2.0.0 分支才可以使用,目前 master 分支并没有此方法。

aisk avatar Nov 18 '16 03:11 aisk

这个方法还是没办法满足我的使用场景,这和 User.become 是一个性质的方法,服务端会有或已经有一个 currentUser 才行

L42y avatar Nov 18 '16 03:11 L42y

确实现在没有好的办法验证 session token 有效并没有副作用,可以描述一下这个需求的具体场景,如果有普遍适用性的话可以考虑添加。

另外暂时可以使用 rest API 进行验证。

aisk avatar Nov 18 '16 07:11 aisk

先抄了下你们 SDK 的代码绕过这个问题:

import AV from 'leancloud-storage';
import {request as AVRequest} from 'leancloud-storage/dist/node/request';

export const fetchUserBySessionToken = (token) => {
  const user = AV.Object._create('_User');

  return AVRequest(
    'users',
    'me',
    null,
    'GET', {
      session_token: token
    }
  ).then((response) => {
    const attrs = user.parse(response);
    user._finishFetch(attrs);

    return user;
  });
};

L42y avatar Nov 21 '16 02:11 L42y