我已经搜索了很多,但无法找到一个令人满意的答案来回答这个问题。
我有一个Meteor网站,用户登录并创建内容。 我还想创建一个手机应用程序,可以与网站交互,并希望用户登录到手机应用程序并访问网站上的相同内容。 这很正常。
我已经创建了一个基本的REST API来使用meteorite包
因此,我目前正在努力告诉meteor在REST请求中告诉用户的ID,即使只是测试。 我认为我可以在浏览器中获取有效用户的
我的问题是:
1.令牌是否针对客户端创建(例如使用主机URL进行散列)?
2.bcrypt是否更改了
3.DDP是否是创建有效令牌的唯一方法,还是我可以创建一个API调用,在服务器上创建令牌,即使现在只传递纯文本凭据?
例如
我真的被卡住了,所以任何指向正确方向的东西都将不胜感激。 我还注意到
我有一个Meteor网站,用户登录并创建内容。 我还想创建一个手机应用程序,可以与网站交互,并希望用户登录到手机应用程序并访问网站上的相同内容。 这很正常。
我已经创建了一个基本的REST API来使用meteorite包
HTTP.publish
访问集合。 它可以在没有任何用户信息(无身份验证)的情况下工作,但现在我想在GET方法和集合的Meteor.allow规则中使用userId
来访问当前用户。因此,我目前正在努力告诉meteor在REST请求中告诉用户的ID,即使只是测试。 我认为我可以在浏览器中获取有效用户的
Accounts._storedLoginToken
并使用它来使用CURL进行测试。 像这样:
curl -H "X-Auth-Token: asdklfjasldfjlsadkjf" -H "Content-Type: application/json" -d '{"name":"A Name","description":"Testing description"}' http://localhost:3000/api/places
我尝试了这个,但没有成功,至少我得到了403。我的问题是:
1.令牌是否针对客户端创建(例如使用主机URL进行散列)?
2.bcrypt是否更改了
X-Auth-Token
的使用方式? 如果没有,那么我在curl命令中做错了什么。3.DDP是否是创建有效令牌的唯一方法,还是我可以创建一个API调用,在服务器上创建令牌,即使现在只传递纯文本凭据?
例如
/api/login?user=shane&pwd=qwerty
=>返回我可以在curl请求中使用的token
。我真的被卡住了,所以任何指向正确方向的东西都将不胜感激。 我还注意到
http.publish
尚未创建登录/注销方法,因此可能并不容易。
auth.js
后,我明白了正在发生的事情以及如何创建新的令牌。我没有意识到的是,每个基于 REST 的 API 都有自己的身份验证方式和设置this.userId
的方法。http-methods:使用token
查询参数 RESTstop:使用loginToken
和userId
参数(还有头部版本) fileCollection:使用头部X-Auth-Token
Meteor 本身使用 DDP 连接来获取userId
,这是我们在 REST 中没有的。这很有用。如果所有 REST 包都能遵守一个单一的方法就好了……我可以做梦了。 - Shane