如果用户未登录laravel,如何重定向索引页面

时间:2014-09-22 06:08:27

标签: laravel laravel-4 blade

您好我在laravel创建网站,但我面临一个问题。问题是当用户没有登录并且用户输入www.test.com/notifications时显示错误,如此

  ErrorException (E_UNKNOWN) 
  Undefined variable: messages (View: /home/test/app/views/message-page.blade.php)

但是我希望当用户没有登录并输入www.test.com/notifications时,用户自动重定向到索引页面。请帮帮我,我很困惑。 我使用基本控制器中的一些代码如下:

  public function checkLoggedIn(){
    if(Auth::user()->check()){
      return;
    }
    else {
      return Redirect::to("/");
    }
  }

1 个答案:

答案 0 :(得分:0)

你应该这样做:

public function checkLoggedIn(){

    if (!Auth::check()) {
       return Redirect::to("/");
    }
    return true;
}

但是我假设您想在另一个控制器中使用此功能,那么您应该这样做:

$result = $this->checkLoggedIn();
if ($result !== true) {
  return $result;
}

进行重定向。

但是Laravel有过滤器,因此您可以轻松检查用户是否已登录。

您可以在routes.php

中使用
Route::group(
    ['before' => 'auth'],
    function () {
       // here you put all paths that requires user authentication
    }
);

您可以在app/filters中调整过滤器,例如:

Route::filter('auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::to('/');
        }
    }
});