2016-08-26 8 views
5

私は自分のウェブサイトでAPIAuth/PHPAuthを使用するいくつかのAPIを呼び出すChrome拡張機能を開発しました。基本的には、ユーザーに拡張オプションとしてウェブサイトのユーザー名とパスワードを入力させ、次のように私のWebサイトでログインAPIを呼び出します。Chrome Extension経由でPHPAuth/PHPAuthを使用してウェブサイトにログインする

if (isset($_POST['email']) && isset($_POST['password'])) { 
       $email = $_POST['email']; 
       $password = $_POST['password']; 

       if($auth->isLogged()) { 
        $userId = $auth->getSessionUID($_COOKIE[$authConfig->cookie_name]); 
        echo json_encode([ 
           'userId' => $userId, 
          ]); 
        die(); 
       } 

       $login = $auth->login($email, $password, true); 

       if($login['error']) { 
        die($login['message']); 
       } else { 
        $userId = $auth->getSessionUID($login['hash']); 
        echo json_encode([ 
           'userId' => $userId, 
          ]); 
        die(); 
       } 
      } else { 
       die('Error'); 
      } 

これは、認証されたユーザーを一時的に考慮するが、実際にユーザーをWebサイトにログインさせることはありません。つまり、iFrame経由でパスワードで保護されたページを開くと、User Loginフォームが表示されます。

誰かが私が間違ってやっていること、あるいは私が必要とするものを考える良い方法を教えてもらえますか?

基本的に、私は、ユーザーたびにログを維持し、彼は、ログインして作られた後、保護されたページを開く必要を保存しています。

+0

内のユーザー名/パスワード認証より安全であるOAuth_2.0を使用するのだろう正直に言うと。ちょうど推測。 – wOxxOm

+0

あなたのコメントは理にかなっていますが、その場合、2回目のリフレッシュ時にページが表示されませんか?それをしないでください。 –

答えて

1

チェックをmanifest.jsonをあなたのウェブサイトのURLと、必要なすべてのサブドメインが含まれていない場合例

"permissions": [ 
    "http://example.com/", 
    "http://*.example.com/", 
    "https://example.com/", 
    "https://*.example.com/" 
], 

のためにも、あなたは、例えば少し異なる方法でウェブサイトと通信することができます。

  • あなたのウェブへのログイン初めてそれはあなたがブラウザlocal storageに保存することができるトークンを返すことができ、サーバ側ではユーザに対してです。

  • このトークンは、リクエストとともにあなたのウェブサイトに送信されます。

  • ウェブサイト側では、このトークンが存在するかどうかを確認する必要があります。適切なユーザに属しているかどうか。有効期限はありませんでした。正しい場合は、ユーザーアクションによって要求を実行します。

そして、はるかに安全で、おそらくセット/ iframeの内部で転送されていないクッキーに関連する拡張コンテキスト

+0

私のマニフェストにはすでに完全なアクセス許可があります... "permissions":["http:// */*"、 "https:// */*"、 "storage"、 "webNavigation"、 "" *:// */* "]、 あなたは正しいですが、あなたはより良いでしょう。私はすでにこの問題を開いているので、私たちはこれを修正できるかどうかを見てみましょう。 –

関連する問題