2016-12-05 5 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