我對這個問題已經用google和stackoverflow(如果可能的話),並且找不到足夠的答案:(一些ref:Laravel 4: when using Config::set to change auth.model then Auth::user() not work,Laravel 5.2 how to use config::set in middleware)在函數中使用Config :: set()兩次的方法
如何在運行時用Laravel 5.2中的Config::set()
成功設置變量兩次。
這裏是什麼,我想實現一個例子:
我有兩個表companies
和users
(它們都從不同的路線與登錄JWTAuth)。現在,我想在這個單一路線Route::get('/computers')
現在這個問題必須獲取所有computers
記錄的是,我想用相同的中間件要做到這一點,但我要確保任何的用戶(即公司或用戶)進行身份驗證,然後才能訪問這個資源
這裏就是我試圖想在我中間件使用Config::set()
:
//all.auth middleware
public function handle($request, Closure $next)
{
Config::set('auth.providers.users.model', \App\Company::class);
Config::set('jwt.user', \App\Company::class);
//check if the request is for company
if($company = JWTAuth::toUser(($request->has('token')) ? $request->token : $request->bearerToken()))
{
return ['COMPANY' => $company];
}
//Unfortunately its not company, lets try users
Config::set('auth.providers.users.model', \App\User::class);
Config::set('jwt.user', \App\User::class);
if($user = JWTAuth::toUser(($request->has('token')) ? $request->token : $request->bearerToken()))
{
return ['USER' => $user];
}
throw new NotFoundHttpException('Your account could not be found.');
...............
}
現在,我的行爲注意到它成功地將JWT將使用的模型更改爲Company
,但在與請求一起發送的令牌爲User
的情況下,並未將其更改爲User
。
我將不勝感激,如果有人能夠幫助,至少理解這是否可能。
如果需要提供更多解釋,我已準備好做到這一點。
謝謝@ jedrzej.kurylo。我會嘗試並提供反饋。 –
謝謝我嘗試了這兩行,但結果仍然是一樣的。有什麼我可能會在這裏失蹤?我注意到我會在問題中更新一些其他行爲。 –