我的问题是如何使用laravel 4和sentry 2来验证调用我的API的用户?这样做的正确方法是什么?
示例:本机iOS应用程序中的用户调用我的Laravel Web服务(返回JSON响应),laravel + sentry如何验证用户?
如果您需要更多信息,请提前致谢并发表评论。
答案 0 :(得分:3)
就像安东尼奥提到的那样,如果客户能够坚持使用cookies,那么你就应该去了。
但是,我会告诉你我对这个话题的研究。我用Laravel寻找API令牌实现。我能找到的是Terry Appleby,他的实现是一个名为tappleby / laravel-auth-token的作曲家包。我在http://rjv.im/post/78940780589/api-token-authentication-with-laravel-and-sentry使用Sentry 2实现了一个更简单的软件包版本。
我把它称为脏的,因为我没有考虑安全性,令牌过期等等,但是为了回答你的问题,上述版本确实有效,除非你在https环境中,否则它不安全。
为了帮助你,我建议github.com/kippt/api-documentation。它是名为kippt.com的应用程序的API文档。我选择了这个,因为它非常简单,如果您不熟悉开发API,可能是一个起点。了解它们如何支持不同类型的身份验证。总结Kippt支持的内容:浏览器会话(我猜测iOS确实支持cookie),HTTP Basic Auth(每次在标题中传递用户名和密码)和Token(在每个请求的标头中传递令牌)。在Kippt的令牌实现上,它只是在成功验证后向客户端返回一个令牌,并且可以保存并使用该令牌。该令牌永远不会改变。在我的博客文章中,我每次用户登录时都会创建一个新令牌。
希望我能提供帮助。
答案 1 :(得分:2)
如果客户端能够持久存储cookie,您只需使用Sentry登录即可。否则,在常见的Sentry身份验证之后,在users表中创建并存储身份验证令牌:
$table->string('api_token',96)->nullable();
然后在所有其他电话中使用它:
{
"token": "a358dafd256cb5b26a944eacc1c7428a97f6d1e079c3f1972696f1bea7fff099",
"user": {
"id": "3",
"email": "joe@doe.com",
"permissions": [],
"activated": true,
"activated_at": null,
"last_login": "2014-03-08 11:17:48",
"first_name": null,
"last_name": null,
"created_at": "2014-03-08 10:29:08",
"updated_at": "2014-03-08 11:17:48",
"api_token": "a358dafd256cb5b26a944eacc1c7428a97f6d1e079c3f1972696f1bea7fff099"
}
}
关于此的文章:http://rjv.im/post/78940780589/api-token-authentication-with-laravel-and-sentry