如何检查用户是否登录并相应地重定向


How to Check whether the user logged in and Redirect Accordingly

这是我的路线:

Route::get('/', 'HomeController@home');
Route::post('login', 'LoginController@Login');
Route::get('vehicle', 'VehicleController@VehicleLayout');

到目前为止,任何用户都可以访问所有页面。

我开始使用auth::user So

    if (Auth::attempt($LoginData))
    {
        return Redirect::intended('dashboard');
    }
    else
    {
        return Redirect::to('')->with('Message', 'UserName or Password Invalid');
    }

我正在登录屏幕中检查。

但是从我上面的代码来看。可以从任何地方访问页面vehicle。在那里,我通过以下方式获取登录用户的详细信息{{ Auth::user()->FirstName}}

当我尝试访问车辆页面时,如果用户没有登录,它只会抛出错误

Trying to get property of non-object (View: C:'xampp'htdocs'mti'app'views'layouts'dashboardlayout.blade.php) (View: C:'xampp'htdocs'mti'app'views'layouts'dashboardlayout.blade.php)

有没有办法检查用户是否已登录并以 laravel 方式将用户重定向到出现错误的登录页面。

<?php
if (Auth::guest())
{
    return Redirect::to('logout')->with('Message', 'You Must Logged In to Access this page.');
}
?>

以上是否给出了一个很好的过程,或者是否有任何 laravel 方法来做到这一点。

您可以并且应该为此使用过滤器。甚至还有一个内置的auth过滤器(您可以在app/filters.php中找到它)

它与路由组结合使用效果很好。下面是一个示例:

Route::group(array('before' => 'auth'), function(){
    Route::get('vehicle', 'VehicleController@VehicleLayout');
    Route::get('foo', 'FooController@BarAction');
});

在Laravel中,做你所要求的很简单。

有一个功能可以检查登录表单中的值,然后检查用户是否存在于数据库中。

if (Auth::attempt(array( 'email' => $email, 'password' => $password ) ) )
{
return Redirect::to( 'your route' );     // route for loged users
}else
{
return Redirect::to('/home')->withMessage('Wrong username/pass')
}

在主页上,您可以显示如下错误消息 {{ If(Session::has('message') {{ $message

}} }}

如果你在数据库中有该用户,该函数会将你重定向到登录用户去的页面,然后你可以键入Auth::user()->username,你将能够访问该用户的任何数据。

**要检查用户是否已登录,只需键入

if(Auth::check){
then do something
}else{
do something else
}**