2017-07-27 61 views
0

我正在尝试在laravel中创建一条路线,如果它已登录但可以继续使用,但如果不是,则仍然可以使用。Laravel(5.4)与当前用户一起使用的护照路线,如果未登录也可以使用

在我的情况下,我有一个名为“场地”和一个“用户”,可以有一个场地作为他的最爱。

因此,这些都是我的路线:

Route::group(['middleware' => ['cors', 'bindings', 'auth:api']], function() { 
    Route::match(['GET', 'OPTIONS'], 'venue/{venue}', '[email protected]')->name('venue')->where('venue', '[0-9]+'); 
}); 

Route::group(['middleware' => ['cors', 'bindings', 'api'], 'namespace' => 'Api'], function() { 
    Route::match(['GET', 'OPTIONS'], 'venue/{venue}', '[email protected]')->name('venue')->where('venue', '[0-9]+'); 
}); 

现在我注意到,Auth::user();只适用于与中间件的路线与'auth:api'但我也想让它变得场地,如果用户没有登录。并且使用这两个组不能以这种方式工作。

我的场馆模型是这样的:

class Venue extends Model 
{ 
    protected $appends = [ 
     'favourite', 
    ]; 

    public function users() 
    { 
     return $this->belongsToMany('App\Models\User', 'venue_user'); 
    } 

    public function getFavouriteAttribute() 
    { 
     $user = Auth::user(); 
     $isFav = false; 
     if ($user) { 
      if ($user->venues) { 
       foreach ($user->venues as $item) { 
        if ($item->id === $this->id) { 
         $isFav = true; 
        } 
       } 
      } 
     } 

     return $isFav; 
    } 
} 

必须有一个更好的方式来做到这一点。

我希望有人能帮助我。

回答

0

好吧,我终于找到了我自己的问题的答案。 显然拿到护照的电流以正确的方式是这样做的:

$user = auth()->guard('api')->user(); 

Auth::user()仅在线路可用的'auth:api'一个middlewhere但是这一次是随处可见,如果我说的不错。

随时纠正我,如果我错了:)

相关问题