Node.js Meteor创建一个带有密码的启动页面,以进入应用程序。保持用户登录独立,并在应用程序内通过启动页

Node.js Meteor创建一个带有密码的启动页面,以进入应用程序。保持用户登录独立,并在应用程序内通过启动页,node.js,meteor,Node.js,Meteor,想要创建一个启动页面,用户可以在其中输入对每个人都相同的站点密码。当网站仅处于预览状态时,隐藏该网站是非常困难的。不知道为什么我不知道怎么做。在《流星》中,它应该是相对直接的 目前已安装流星路由器。这是最好的方法吗?我该怎么办 谢谢这里有一个可能的答案: 在路由器上添加一个过滤器,如: Meteor.Router.filters 'authorizeUser': (page) -> if Session.get 'knowsTheSecret' then page else '

想要创建一个启动页面,用户可以在其中输入对每个人都相同的站点密码。当网站仅处于预览状态时,隐藏该网站是非常困难的。不知道为什么我不知道怎么做。在《流星》中,它应该是相对直接的

目前已安装流星路由器。这是最好的方法吗?我该怎么办


谢谢

这里有一个可能的答案:

路由器上添加一个过滤器,如:

Meteor.Router.filters
  'authorizeUser': (page) ->
    if Session.get 'knowsTheSecret' then page else 'splash'

Meteor.Router.filter 'authorizeUser'
这意味着每个页面请求必须设置
knowsSecret
会话变量,否则用户将被引导回
splash
页面(在别处定义)

在服务器上(如中所示,将其放入
server
目录中)。创建验证密码的方法:

Meteor.methods
  checkSecret: (string) ->
    string is 'super secret password'
当用户单击初始页面上的登录按钮时,您可以调用如下方法:

Template.splash.events
  'click button': ->
    password = $('#text-field').val()
    Meteor.call 'checkSecret', password, (err, result) ->
      Session.set 'knowsTheSecret', result

因此,
会话
变量只有在用户真正知道秘密的情况下才能设置。当然,这在任何方面都不安全(用户只需打开控制台并手动设置会话变量),但这只是一个开始。玩转所有这些,看看它是否能让你更接近一个可行的解决方案。

在用户通过启动页面后,你需要用户帐户的概念吗?目前应用程序使用了一些帐户。一旦通过启动页面,用户将使用其实际用户名/密码登录。启动页面只是为了在应用程序向公众发布之前阻止人们在应用程序中看到任何东西。这些代码去哪里了。我有:
console.log('foundfilters');Meteor.Router.filters({'checkSplashPage':函数(页面){console.log('filtering');if(Session.get('knowsSecret')){return page;}else{return'splash';}}});Meteor.Router.filter('checkSplashPage')在浏览器的控制台中输出:“找到过滤器”,但它从未触发checkSplashPage功能不确定如何使其工作?似乎应该有某种方法从服务器端代码来实现这一点?你有什么建议吗?我刚刚有机会尝试了所有这些,它工作了,但我意识到我忘了在方法调用中发送密码。我用一个例子更新了答案,这个例子假设在名为
splash
的模板上有一个按钮和一个文本字段。至于代码的去向——这其实并不重要,因为它是流星。如果需要,您可以将所有这些内容放在
客户机
目录下的单个文件中(除了
checkSecret
的定义)。