2017-03-08 29 views
0

User模式可能是匿名(如沒有電子郵件的註冊,$user->isAnonymous())。通過使用api.auth中間件兩個匿名和完全註冊的用戶可以訪問給定的路線。現在我想限制一條路線,以便匿名用戶無法訪問它。中間件「客」類型的用戶,使用巴丁格API

(重點注意「匿名用戶」還在驗證,匿名指未經認證)

的問題是,我應該在哪裏把這個邏輯,最好與巴丁格符合包?我在製作自己的中間件,擴展Dingo還是爲Dingo製作定製的提供商?

獎金的問題:我認爲最好的結果將有一箇中間件(如:api.auth)只批准那些不是匿名用戶,而第二中間件(如:auth.all)授權匿名非匿名用戶。

回答

1

我會去嵌套中間件這樣

Route::group(['middleware' => 'auth:api'], function(){ 
    Route::get(...); //all authenticated users can see this 

    Route::group(['middleware' => 'known'], function() { 
     //assuming the middleware name is 'known' in kernel.php 
     Route::get(....); //Only known users (non-anonymous) will get in here 
    }); 
}); 

對於中間件你可以做類似

public function handle($request, Closure $next) 
{ 
    if (Auth::check()){ 
     if(!Auth::user()->email) { 
      return redirect('/'); //no email. kick them out! 
     } 
    } 
    return $next($request); 
} 

或任何東西。

+0

謝謝!絕對是解決問題最簡單的方法,簡單的方法往往是最好的選擇。我會在今天剩下的時間把它留在那裏,看看有沒有人有更好的主意。 – Zoon

相關問題