这是我的路线:
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
}**