2017-04-20 73 views
0

,當我想訪問一個網頁在我的應用我得到一個異常時,我沒有重定向到登錄時用戶無法連接

ErrorException登錄ec75fc198343b0a46e649467428bd2d5f829caf1.php線49: 試圖獲得非物件的財產

我應該製作一個路由中間件組嗎?

我想當我想要訪問頁面時,我不記錄該應用程序直接重定向到登錄窗體而不顯示我這個錯誤消息!

有人知道如何做到這一點?

+0

是的,您應該在中間件或控制器中執行此操作。客人不應該能夠呈現此視圖。 – Jerodev

+0

你使用laravel的Auth嗎? – Onix

+0

yeap !!!我使用Laravel Auth –

回答

1

爲負責渲染頁面的操作啓用auth中間件。你可以通過多種方式在Laravel中實現這一點。這裏有幾個:

在routes文件特定動作

Route::get('your/page', ['middleware' => 'auth', 'uses' => '[email protected]']); 

或同樣的事情流利

Route::get('your/page', '[email protected]')->middleware('auth'); 

在routes文件爲一組動作/頁

Route::group(['middleware' => ['auth'], function() { 
    Route::get('your/page', '[email protected]'); 
}); 

在控制器中

class YourPageController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('auth'); // you can pass an array of actions/methods that should not be covered by the auth middleware in a second parameter ['except' => 'someaction'] 
    } 
} 
+0

非常感謝您的回答!我試了這個,我實際上使用adminlte模板,當我嘗試與中間件運行頁面,我得到路由[adminlte ::登錄]未定義。你知道我爲什麼會遇到這個問題嗎? –

+0

很難說沒有看到代碼,但我想你的路由文件中沒有命名的'login'路由。 'Route :: get('login','Auth/LoginController @ login') - > name('login');''看看最後名字是如何通過使用' name()方法? – peterm

+0

我檢查!非常感謝 !!!! –

1

編輯您的Kernel.php,這在末尾添加到受保護的$ routeMiddleware部分:

​​

然後在你的路線,你可以用這個「權威性」來檢查用戶是否登錄。

例如:

Route::get('/example', '[email protected]')->middleware('auth'); 

,如果你沒有一箇中間件或您有任何麻煩遵循這個https://laravel.com/docs/5.4/authentication