【发布时间】:2014-09-14 20:22:49
【问题描述】:
我的流星应用程序使用 github 身份验证。用户认证后
Meteor.user()
返回当前经过身份验证的用户(在客户端和服务器上)。
我现在需要的是无需身份验证即可运行我的应用程序。但是 Meteor.user() 应该返回一些用户,因为我的代码需要它。无论如何我可以告诉我的流星应用 Meteor.user() 应该返回什么?
【问题讨论】:
标签: authentication meteor
我的流星应用程序使用 github 身份验证。用户认证后
Meteor.user()
返回当前经过身份验证的用户(在客户端和服务器上)。
我现在需要的是无需身份验证即可运行我的应用程序。但是 Meteor.user() 应该返回一些用户,因为我的代码需要它。无论如何我可以告诉我的流星应用 Meteor.user() 应该返回什么?
【问题讨论】:
标签: authentication meteor
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 分配一个新函数来更改其行为。就那么简单!不过我不会推荐它。
我不确定您到底想达到什么目的,但也许为匿名用户创建一个自定义登录句柄会有所帮助。看看here,Arunoda 对扩展 Meteor 的帐户系统做了很好的解释。
不过,我认为最好的方法是让您的代码独立于事实,Meteor.user() 可能是null'ish,正如@fritzi2000 所建议的那样。
请注意Meteor.user() 可能会返回null,即使用户实际登录并且Meteor.userId() 设置正确。这是因为Meteor.user() 或多或少等同于
Meteor.users.findOne({_id: Meteor.userId()});
所以它依赖于从服务器获取的一些特定数据。因此,最好使用Meteor.userId() 验证登录状态。
【讨论】: