2016-11-17 6 views
0

今の私の最大の問題は、認証laravel 5.3でセッションベースの認証を行うためにどのように任意のアイデア

であるイムフェッチと使用してサーバにデータを送信するためのAPIを使用しているので、私の頭はこれについて痛みますVUE

ので、IVEはAUTHミドルウェアでログインことをやってみましたが、それは許可されていないが、でも私は

でそういただきました認証に問題とどのように私は、そのセッションベースの認証を実装することができますをログに記録することを言い続けましたか?

答えて

1

APIとしてLaravelを使用している場合は、トークンベースの認証を行うことをお勧めします。主なアイデアは、デフォルトの 'web'ガード(congif/auth.phpでこれを変更できます)ではなく、 'api'ガード(TokenGuardクラスを使用)を使用することです。このようにして、Laravelは各リクエストのAuthorizationヘッダーにあるBearerトークンを探します。

This is a decent walk through私は確かにそこに他の多くの良いブログの記事とチュートリアルがあると確信しています。

EDIT:これは便利ですが、ここでは自動化されたテストを使用した例です

わからない場合。私のModelFactoryでは、api_token属性を持つユーザーモデルがあり、ランダム(および一意の)60文字の文字列に設定されています。これは私がユーザーのリストを取得できることを確認するための簡単なテストです:私のconfig/auth.phpファイルの先頭に

/** @test */ 
public function user_index_endpoint_returns_list_of_users() 
{ 
    $user = factory(User::class)->create(); 

    $this->get('/users', array(
       'Accept' => 'application/json', 
       'Authorization' => 'Bearer ' . $user->api_token 
      )) 
     ->assertResponseStatus(200) 
     ->seeJsonStructure([ 
      'users' 
     ]); 
} 

、私は「API」に私のデフォルトのガードを設定しました:

'defaults' => [ 
    'guard' => 'api', 
    'passwords' => 'users', 
], 

最後に、私のルートファイルでは、ユーザーのルートを設定して '認証'ミドルウェアを使用しました。

Route::group(['middleware' => 'auth'], function() { 
    Route::get('/users', '[email protected]'); 
}); 

私はLaravelは私の要求を認証しようとするTokenGuardクラスを使用します。舞台裏で、私のデフォルトとして「API」ミドルウェアを定義しましたので。これを行うために、私の要求でベアラトークンを探し、それをusersテーブルと比較します。

+0

小さなスニペットでこれを行う方法を教えてください。これは私に頭の痛みを与えた –

+0

私はいくつかの例のコードで私の答えに追加しました。それが役に立てば幸い! – jackel414

関連する問題