Authentication 如何知道用户是否从其他服务登录

Authentication 如何知道用户是否从其他服务登录,authentication,meteor,Authentication,Meteor,我在同一台服务器上有一个php/apache服务和meteor。我正在使用accounts ui包。 在我的php脚本中,给定登录令牌(会话id),是否有用户登录 这是我最初的需要:上传一个登录用户的个人资料图片。 很简单吧?但在谷歌搜索了几个小时后,我还没有找到答案 第一种解决方案是使用html5文件API将数据发送到meteor服务器,服务器保存图像。但这个解决方案甚至不适用于IE9 第二种解决方案是我正在尝试的:使用html表单将图片上传到php脚本(或者任何脚本,如果需要,它可以是no

我在同一台服务器上有一个php/apache服务和meteor。我正在使用accounts ui包。 在我的php脚本中,给定登录令牌(会话id),是否有用户登录

这是我最初的需要:上传一个登录用户的个人资料图片。 很简单吧?但在谷歌搜索了几个小时后,我还没有找到答案

  • 第一种解决方案是使用html5文件API将数据发送到meteor服务器,服务器保存图像。但这个解决方案甚至不适用于IE9

  • 第二种解决方案是我正在尝试的:使用html表单将图片上传到php脚本(或者任何脚本,如果需要,它可以是nodejs脚本)。此脚本将像传统php脚本一样保存图像。问题是我不知道上传请求是否被授权,否则每个人都可以更改任何人的个人资料图片。我必须在上传请求中添加一些信息,并在保存图像之前在php代码中进行验证。我正在考虑从php脚本向meteor服务器发送请求,但我需要知道要发送哪些参数以及meteor如何响应它

我如何才能实现第二个解决方案,或者如果有人对我的原始问题有另一个解决方案,那将是非常好的


谢谢。

Meteor使用一种称为DDP的协议在客户端和服务器之间进行通信。但是到目前为止,还没有一个PHPDDP客户端,所以您必须在meteor服务器和PHP服务器之间使用REST类型的通信方法

如果您觉得可以为meteor客户机构建一个PHP客户机,它将极大地帮助您,因为您可以从PHP脚本中运行meteor.call并让他们订阅集合。完整的DDP规范(pre1)可在以下网址找到:

要执行REST方法,您应该使用REST方法创建服务器端路由。它是通过安装的,可帮助您访问[atmosphere.meteor.com]上的社区软件包列表

服务器端js

Meteor.Router.add('/checklogin', 'post', function() {
    var userId = this.params.userId;
    var loginToken = this.params.loginToken;

    if(userId && loginToken) {
        return (!!Meteor.findOne({_id:userId,"services.resume.loginTokens.token":loginToken}));
    }
});
然后,您可以使用PHP对
/checklogin
执行POST请求,其中有两个参数,一个是userId,即userId(使用
Meteor.userId()
localStorage.getItem(“Meteor.userId”)
。另一个是通过Meteor客户端上的
localStorage.getItem(“Meteor.loginToken”)
找到的登录令牌