2016-12-05 4 views
0

私はVueJSフロントエンドにサービスするLaravel API(実際にはルーメンAPI)を持っています。 Vueアプリは、ユーザーがGoogleにログインできるようにします。その後、GoogleのトークンがLumen APIに返され、Googleがトークンを確認し、電子メールアドレスが有効なユーザーであることを確認します。次に、トークンを生成し、そのトークンをユーザにDBに格納し、ユーザオブジェクトを返します。ラーベルトークン認証

私はPassportやjwt-authなどを使用していません。では、どのようにしてデフォルトのAuthミドルウェアを使用して、(今はログインしている)ユーザーがすべてのリクエストで返されるトークンヘッダーを確認するにはどうすればよいですか? (すなわち、DB内のトークンであり、期限切れですか?)。これをより効率的に行う方法があるので、Laravelは有効なトークンをキャッシュし、要求ごとにDBにヒットする必要はありませんか?

答えて

0

Authentication Middlewareを使用できます。あなたの要求に応じてapi_tokenを渡してください。より詳細な答えはhereです。

Userテーブルにapi_tokenの列を追加します。

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 
class Authenticate 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string|null $guard 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->guest()) { 

      if ($request->ajax() || $request->wantsJson()) { 
       return response('Unauthorized.', 401); 
      } else { 
       return redirect()->guest('auth/login'); 
      } 
     } 

     return $next($request); 
    } 
} 

し、応答をRoute Group

Route::group(['middleware' => 'auth:api'], function() { 

    Route::resource('api/v1/foo/bar', 'API\FooBarController'); 

} 
+0

感謝を使用します。

$table->string('api_token', 60)->unique(); 

は、次のような認証ミドルウェアを持っています。しかし、私はミドルウェアの 'Auth :: guard($ guard) - > guest()'チェックをどうやって得るのでしょうか?私はトークン(有効期限付き)をデータベースに保存しています。 – daninthemix

+0

ルートグループの構文は ''middleware' => 'auth:guardName''です。 – Wistar

関連する問題