【问题标题】:Why is Meteor.userId() reactive? Does it have to be?为什么 Meteor.userId() 是反应式的?它必须是吗?
【发布时间】:2018-01-21 21:31:41
【问题描述】:

我是 Meteor 的新手,我正在尝试围绕一些概念展开思考。

某些帐户内容对我来说不太有意义——比如为什么我希望登录用户的用户 ID 具有响应性?这似乎不太可能经常改变,并且当(至少在 React 中)this.currentUser.profile.name 暂时未定义时会变得烦人。

让用户帐户具有响应性有什么好处?一定要吗?

【问题讨论】:

  • 这对于检测一个人何时登录或未登录很有用。这样,注销的用户就无法访问他们不应该访问的内容。在服务器上,要检查用户是谁,您应该使用 this.userId
  • @Rager 谢谢——我知道为什么我想知道某人是否登录,但不知道为什么它需要成为反应性资源。弄清楚一个人是谁似乎需要很多开销——尽管我认为我错过了一些东西。

标签: meteor meteor-accounts


【解决方案1】:

根据Meteor.userId() 的值将用户反应性地重定向到公共(例如:登录)或私人(例如:仪表板)页面非常重要。

【讨论】:

  • 谢谢——但假设存在重定向登录流程,我看不到登录状态如何让任何人感到意外。只要他们已经登录,确定 WHO 已登录不应该改变,对吧?
  • 假设您正在打开多个页面。如果您在signle 页面上注销,这将触发实时重定向到登录页面,例如现代大型网站(例如:facebook)。在传统网站上,您必须刷新其他页面才能发现您不再经过身份验证。如果您删除会话 cookie,则行为相同。因此它可以为您的网站提供更好的用户交互和体验。
  • 谢谢! -- 那么,接下来的问题当然是 -- 是否有可能让它反应?如果我更担心阻止应用程序下载给未经授权的用户 - 或者只是更容易访问可能不会经常更改的个人资料信息?
  • Meteor.userId() 如果有用户登录,则获取当前用户 ID,如果没有用户登录,则为 null。否则它不会更改。即使用户已登录,React 组件也可以在 Meteor.userId() 获取用户 ID 之前渲染,并且首先它将包含未定义的内容。所以你必须使用像这样的包:(atmospherejs.com/meteor/react-meteor-data) 在流星数据可用后重新渲染反应组件。
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多