【问题标题】:How to set Meteor.user()如何设置 Meteor.user()
【发布时间】:2014-09-14 20:22:49
【问题描述】:

我的流星应用程序使用 github 身份验证。用户认证后

Meteor.user()

返回当前经过身份验证的用户(在客户端和服务器上)。

我现在需要的是无需身份验证即可运行我的应用程序。但是 Meteor.user() 应该返回一些用户,因为我的代码需要它。无论如何我可以告诉我的流星应用 Meteor.user() 应该返回什么?

【问题讨论】:

    标签: authentication meteor


    【解决方案1】:

    Meteor.user() 总是返回当前用户。如果没有用户登录,则 Meteor.user() 返回 null。你无法改变这种行为。

    然后要做的事情可能是修改您的应用程序代码,以便在没有用户登录时运行不同的代码。您可以这样做:

    if(Meteor.user()){
        //do stuff when user is logged in
    }
    else{
        //do stuff if user is not logged in
    }
    

    【讨论】:

    • 您可以通过为Meteor.user 分配一个新函数来更改其行为。就那么简单!不过我不会推荐它。
    • 这似乎是唯一的解决方案,而且它就像一个魅力:) thnx
    【解决方案2】:

    我不确定您到底想达到什么目的,但也许为匿名用户创建一个自定义登录句柄会有所帮助。看看here,Arunoda 对扩展 Meteor 的帐户系统做了很好的解释。

    不过,我认为最好的方法是让您的代码独立于事实,Meteor.user() 可能是null'ish,正如@fritzi2000 所建议的那样。

    请注意Meteor.user() 可能会返回null,即使用户实际登录并且Meteor.userId() 设置正确。这是因为Meteor.user() 或多或少等同于

    Meteor.users.findOne({_id: Meteor.userId()});
    

    所以它依赖于从服务器获取的一些特定数据。因此,最好使用Meteor.userId() 验证登录状态。

    【讨论】:

    • 感谢您指出这一点,我一定会阅读那篇文章!
    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2013-05-08
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多