Parse platform 当用户获得';s在单击验证链接后重定向到web应用

Parse platform 当用户获得';s在单击验证链接后重定向到web应用,parse-platform,Parse Platform,根据Parse js指南: 从Parse.User.current()获取的Parse.User将始终经过身份验证。如果需要检查Parse.User是否经过身份验证, 您可以调用authenticated方法。你不需要检查 使用通过 验证方法 因此,当用户在我的web应用上注册时,会收到一封验证电子邮件,单击后将引导用户返回该应用。然后我调用Parse.User.current(),它返回User对象,但sessionToken为空。用户对象如下所示: ACL: {*: {…}, vIl61vo

根据Parse js指南:

Parse.User.current()
获取的
Parse.User
将始终经过身份验证。如果需要检查Parse.User是否经过身份验证, 您可以调用
authenticated
方法。你不需要检查 使用通过 验证方法

因此,当用户在我的web应用上注册时,会收到一封验证电子邮件,单击后将引导用户返回该应用。然后我调用
Parse.User.current()
,它返回User对象,但sessionToken为空。用户对象如下所示:

ACL: {*: {…}, vIl61voP42: {…}}
createdAt: "2019-11-08T11:47:44.102Z"
emailVerified: true
objectId: "vIl61voP42"
origin: "Web App"
sessionToken: undefined
updatedAt: "2019-11-08T11:50:19.633Z"
username: "dfgg@dfgg.com"
我的目标是允许用户访问应用程序,而不必手动登录并创建会话。根据Parse docs,我的理解是,一旦有一个用户从
Parse.user.current()
返回,这意味着该用户将登录,因此我可以设置新数据并将其保存到用户对象中,但情况并非如此

对于注册,我有一个标准的解析注册,如文档所示:

var user=new Parse.user();
user.set(“用户名”、“我的名字”);
设置(“密码”、“我的通行证”);
user.set(“电子邮件”email@example.com");
试一试{
等待user.signUp();
//万岁!让他们现在就使用这个应用。
}捕获(错误){
//在某个地方显示错误消息,然后让用户重试。
警报(“错误:+Error.code+”“+Error.message”);
}
一旦提交了注册表单,用户将收到一个电子邮件确认链接,该链接将重定向到我的应用程序
url
。以下是我的解析服务器设置的外观:

constapi=新的解析服务器({
...
verifyUserEmails:对,
emailVerifyTokenValidityDuration:0,
preventLoginWithUnverifiedEmail:正确,
自定义页面:{
//应用程序
passwordResetSuccess:设置[“appUrl”]+“/login”,
verifyEmailSuccess:设置[“appUrl”]+“/dashboard”,
linkSendSuccess:设置[“appUrl”]+“/电子邮件确认”,
//解析
invalidLink:设置[“服务器URL”]+“/已过期”,
选择密码:设置[“服务器URL”]+“/选择密码”
}
...
})
最后,一旦用户从验证电子邮件链接到达我的
仪表板
路径,我将通过
await Parse.user.current()
获取当前用户,它将返回不带会话令牌的用户对象。还检查了我的本地开发数据库,没有创建会话


有什么想法吗?

你能分享一些代码让我们提供建议吗?您是否尝试调用
wait user.fetch()
以更新会话令牌?@davidacêdo我已用更多代码和详细信息更新了我的问题。使用
user.fetch()。我使用
user.toJSON()
获取用户对象并检查其值。谢谢为了确保这段代码是在客户端(web浏览器)还是服务器端(node.js)上运行?@davidacêdo这都是在客户端使用Parse js SDK,不包括服务器上的parseServer配置。根据您的经验,当用户单击验证链接并登录到我的应用程序时,调用
Parse.user.current()
应该具有会话令牌,对吗?顺便说一下,我使用的是解析服务器2.4.8,我不这么认为。不幸的是,我认为您将不得不再次登录用户。