解析服务器 user.getSessionToken() 未定义

Posted

技术标签:

【中文标题】解析服务器 user.getSessionToken() 未定义【英文标题】:Parse-server user.getSessionToken() not defined 【发布时间】:2016-06-10 17:43:48 【问题描述】:

Parse.User.getSessionToken 上的文档指出:

如果用户已经登录,或者如果它是使用主密钥查询的结果,则返回此用户的会话令牌。否则,返回 undefined。

我正在使用 JS SDK。当我使用主密钥创建并保存新用户时,我可以使用user.getSessionToken 在回调中获取会话令牌。效果很好。

当我使用主密钥查询用户时,该用户被返回,我尝试以相同的方式获取会话令牌,但它是未定义的。

我已确认该用户的会话有效,但结果始终相同。

我正在尝试登录被查询的用户。

become() 函数需要会话令牌。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

事实证明,创建和保存新用户会生成一个会话令牌,并且一个人可以在保存后使用块中的getSessionToken() 来获取该令牌:

//create newUser and save username/password

return newUser.save(null, userMasterKey:true)
    .then( function(user) 
        var token = user.getSessionToken();
        //use that token
);

查询用户并尝试获取令牌但不起作用:

userQuery.first(useMasterKey:true)
     .then(function(user) 
            if(user)
            
               var token = user.getSessionToken();
               //token is null
            

我正在进行 SSO 登录,并使用来自 SAML 服务器的令牌作为 Parse 用户用户名。在我的移动客户端用户登录 SSO 服务器并向客户端提供解析会话令牌后,我需要登录 Parse。

对于现有的解析用户,解决方案是查询用户,使用主密钥将密码更改为随机超级密码,使用新密码登录,然后获取会话令牌并将其发送。

希望这对某人有所帮助。

【讨论】:

【参考方案2】:

对我来说,如果您以一个用户身份登录并使用 masterKey 查询另一个用户,则返回的用户将没有会话令牌,即使他们当前已登录并具有有效会话。

为什么你需要“成为”那个用户?

为什么不直接使用主密钥执行您需要执行的查询/更新操作,而不是“成为”该用户来执行此操作?

【讨论】:

以上是关于解析服务器 user.getSessionToken() 未定义的主要内容,如果未能解决你的问题,请参考以下文章

DNS域名解析服务

CentOS7 搭建 DNS 域名解析服务器

DNS域名解析服务----正向解析反向解析主从服务器搭建

DNS分离解析和智能解析 1构建DNS域名服务器的分离解析 DNS分离解析域名服务器概述 DNS分离解析域名服务器实际也是主域名DNS服务器,这里所说的分离解

DNS域名解析服务

DNS域名解析服务 -----正向解析反向解析简介