我正在使用 Meteor.js 的内置帐户功能。当用户通过 cookie 登录时,Meteor 似乎首先加载页面的“注销”版本,然后自动登录用户并重新加载页面以获取“登录”版本。
您可以在示例派对应用程序中看到此行为:http: //vdawg-parties.meteor.com/ 注册,然后重新加载页面。它将加载已注销的页面,然后在 2-3 秒后切换到已登录的版本。
是否可以在页面加载时加载登录版本?加载一个页面然后立即切换到另一个页面是令人困惑的。
我正在使用 Meteor.js 的内置帐户功能。当用户通过 cookie 登录时,Meteor 似乎首先加载页面的“注销”版本,然后自动登录用户并重新加载页面以获取“登录”版本。
您可以在示例派对应用程序中看到此行为:http: //vdawg-parties.meteor.com/ 注册,然后重新加载页面。它将加载已注销的页面,然后在 2-3 秒后切换到已登录的版本。
是否可以在页面加载时加载登录版本?加载一个页面然后立即切换到另一个页面是令人困惑的。
Meteor 是建立在“在线数据”类型结构之上的。这意味着最初,当您的项目加载时,服务器和浏览器之间没有发送任何实际数据。因此,如果不等待数据下载,就无法确定用户是否以流星般的方式登录。
这就是localStorage
当用户登录时流星存储登录数据的原因。
载入画面
最好在流星从服务器下载/同步本地集合时有一个加载屏幕,以等待用户登录完成的方式:
客户端html
<template name="YourLoggedInSection">
{{#if isLoaded}}
..your logged in section/or place to log in
{{else}}
<h1>Loading</h1>
{{/if}}
</template>
客户端js
Template.YourLoggedInSection.isLoaded = function() {
return Accounts.loginServicesConfigured();
}