2013-05-20 21 views
10

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

残念ながら、これはあまり説明されておらず、私は少し失われています。

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

答えて

11

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

多くのコードのようですね?いいえ。

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

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

は次にフィルチョウザメのウェブサイト上の例のように、通常はあなたのAPIを記述します。

あなたのすべてのモデルには、オーバーロードされたコンストラクタを持つ必要があります。 http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

authCheckが有効であることをテストするモデルを作成し、returnFailedResponseが401 Unauthorizedメソッドを返すようにします。

他のコントローラでは、「認証」と呼ぶことができます。上記のコンストラクタを使用します。

ここで、APIを呼び出すたびにAuthのヘッダーを設定する必要があります。 Ex。 'Auth:12m34k23b'。

+0

ありがとうございました!私はこれに似た何かをやめた。私はあなたの答えを受け入れたものとしてマークします。 – jose

+0

現在、セッションにアクセスする方法の状態にあります。私はすでにログインの投稿を試みましたが、セッションを作成するのに成功しましたが、次のリクエストはログインしていません。 –