Laravel 4 + Sentry 2作为Web服务

时间:2014-05-15 15:02:33

标签: laravel laravel-4 cartalyst-sentry

我的问题是如何使用laravel 4和sentry 2来验证调用我的API的用户?这样做的正确方法是什么?

示例:本机iOS应用程序中的用户调用我的Laravel Web服务(返回JSON响应),laravel + sentry如何验证用户?

如果您需要更多信息,请提前致谢并发表评论。

2 个答案:

答案 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