0

私の質問は、laravel 4 と sentry 2 を使用して、API を呼び出しているユーザーを認証するにはどうすればよいですか? これを行う適切な方法は何ですか?

例: ネイティブ iOS アプリのユーザーが私の Laravel Web サービスを呼び出します (JSON 応答を返します)。laravel+sentry はどのようにユーザーを認証できますか?

事前に感謝し、さらに情報が必要な場合はコメントしてください。

4

2 に答える 2

3

アントニオが述べたように、クライアントが Cookie を永続化できる場合は、設定する必要があります。

しかし、このトピックに関する私の研究をお話しします。LaravelでAPIトークンの実装を探しました。私が見つけたのは Terry Appleby によるもので、彼の実装は、tappleby/laravel-auth-token という名前の composer パッケージです。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 基本認証 (ヘッダーで毎回ユーザー名とパスワードを渡す)、およびトークン (すべての要求のヘッダーでトークンを渡す)。Kippt のトークン実装では、認証が成功した後にクライアントにトークンを返すだけで、そのトークンを保存して使用できます。そのトークンは決して変更されません。私のブログ投稿では、ユーザーがログインするたびに新しいトークンを作成しています。

私が助けてくれることを願っています。

于 2014-05-16T03:27:26.923 に答える
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

于 2014-05-15T15:18:55.930 に答える