11

Phil Sturgeon Rest Server を使用して、単純な RESTful サービスを作成しています。このライブラリで提供される API キーを使用して、メソッドを保護したいと考えています。

残念ながら、これは十分に文書化されておらず、少し迷っています。

ユーザー (電子メール/パスワード) を認証してから、他のすべての要求で送信する認証キーを生成したいと考えています。しかし、認証キーを生成するにはすでに認証キーが必要なようです...ダミーキーを作成することはあまり安全ではないようです。ばかげた質問で申し訳ありませんが、ベストプラクティスは何ですか?

4

1 に答える 1

13

他の API に精通している場合は、共通のパターンに気付くでしょう。ユーザーが電子メールとパスワードを渡す認証方法をお勧めします。これにより、生成された一意の認証キーが返されます。認証キーはセッション ID のようなものです。Cookie がどのように機能するかを考えてみてください。次に、他のすべての API メソッドが $this->post('auth') をチェックする必要があり、各リクエストを処理する前に、これをセッション ハンドラー (データベースまたはセッション) と比較する必要があります。

たくさんのコードのようですね。いいえ。

すべてのモデルには、オーバーロードされたコンストラクターが必要です。

class MyAPIController extends Rest_controller
{
    public function __construct()
    {
        parent::__construct();

        if(!authCheck($this->post('auth'))){
            returnFailedResponse();
            exit();
        }
}

次に、Phil Sturgeon の Web サイトの例のように、通常どおり API を記述します。 http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

認証キーが有効であることをテストする authCheck を持つモデルを作成し、returnFailedResponse で 401 Unauthorized を返すメソッドを作成します。

別のコントローラーでは、「Auth」と呼び、上記のコンストラクターを使用します。

これで、API へのすべての呼び出しで、Auth のヘッダーを設定する必要があります。元。「認証: 12m34k23b」。

于 2013-06-27T05:53:31.410 に答える