2016-10-19 41 views
0

我使用Laravel 5.2登錄頁面,我有Authenticate.php文件中:Laravel 5.2認證錯誤:訪問直接通過URL

\vendor\laravel\framework\src\Illuminate\Auth\Middleware 

我需要驗證我的用戶,這樣,用戶可以不只需在URL中寫入即可訪問登錄頁面。怎麼做? 當我搜索時,解決方案是在Http中的中間件文件夾中的Authenticate文件,這有點不同。

This is my Authenticate.php and it's content

請告訴我該怎麼做。我試過了:

if(Auth::guard($guard) -> guest()){ 
if ($request -> ajax()){ 
return response['Unauthorized',401]; 
} else{ 
return redirect() -> guest('login'); 
} 
} 
return $next($request); 
} 
} 

怎麼辦?請告訴我選項。任何建議都被邀請。 而且,預先感謝您... :)

+0

怎麼樣只用中間件? '路線::組([ '中間件'=> 'AUTH'],函數(){ 路線::得到( '/簡檔',函數(){ //使用驗證中間件 });} );' – aleksejjj

+0

這不起作用。即使在使用它之後,我也可以通過在URL中寫入「/ dashboard」來訪問我的登錄頁面(儀表板是我的下一頁) –

+0

嗯。那麼'['middleware'=> ['web','auth']]'? – aleksejjj

回答

0

把所有的只有已登錄的用戶可以訪問到Auth中間件組路線:

Route::group(['middleware' => ['auth']], function() { 
     // Routes here 
}); 
+0

謝謝,但不工作..仍然是同樣的問題 –

+0

它顯示一個錯誤:調用未定義的方法Illuminate \ Support \ Facades \ Auth :: handle() –

+0

@shefalisharma您使用Auth :: handle()的目的是什麼 –

1

您發現搜索時是正確的,你的解決方案其實應該裏面app/Http/Middleware編輯自己的中間件,如果你簽出的文檔here,做正確的方法是: 必須更新這個中間件app/Http/Middleware/RedirectIfAuthenticated.php具有這種功能

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/admin'); 
    } 

    return $next($request); 
} 

,你可以在你的情況做什麼,你可以使用,如果從句同在當前的處理功能,所以它看起來是這樣的:

if (Auth::guard($guard)->check()) { 
    return redirect('/admin'); 
} 
if (Auth::guard($guard)->guest()) { 
    if ($request->ajax()) { 
     return response['Unauthorized',401]; 
} else { 
     return redirect()->guest('login'); 
    } 
} 
return $next($request); 
+0

謝謝,actullyi在Authenticate和RedirectIfAuthenticate之間感到困惑。但它仍然不工作..我甚至改變了儀表板的路線:Route :: get('/ dashboard',[ \t'uses'=>'UserController @ getDashboard', \t'as'=>'dashboard' , \t'middleware'=>'guest' \t]); –

+0

這究竟是什麼不工作,你可以提供更多的細節? – Neal