Laravel 5检查用户是否已登录

时间:2015-05-08 07:30:02

标签: authentication laravel filter url-routing laravel-5

我是Laravel 5的新手,并尝试了解其Auth进程。我想阻止用户访问我的某些页面,除非用户没有登录。尝试使用Route:filter但它不起作用。我做错了什么?

Route::filter('/pages/mainpage', function()
{
    if(!Auth::check()) 
    {
        return Redirect::action('PagesController@index');
    }
});

8 个答案:

答案 0 :(得分:13)

您应该使用auth middleware。在您的路线中,只需添加如下:

Route::get('pages/mainpage', ['middleware' => 'auth', 'uses' => 'FooController@index']);

或者在你的控制器构造函数中:

public function __construct(){
    $this->middleware('auth');
}

答案 1 :(得分:4)

您可以通过这种方式直接在您的刀片代码中执行此操作

@if (!Auth::guest())
        do this 
@else
        do that
@endif

答案 2 :(得分:2)

如果你想要单一路由的认证中间件那么

// Single route

Route::get("/awesome/sauce", "AwesomeController@sauce", ['middleware' => 'auth']);

如果您想在多路线路上使用auth middlesware,请使用:

// Route group

Route::group(['middleware' => 'auth'], function() {
// lots of routes that require auth middleware
});

答案 3 :(得分:2)

您可以在控制器中使用middleware

  1. 控制器中的所有操作都需要登录
  2. public function __construct()
    {
        $this->middleware('auth');
    }
    
    1. 或者您可以查看它的实际操作
    2. public function create()
      {
          if (Auth::user()) {   // Check is user logged in
              $example= "example";
              return View('novosti.create')->with('example', $example);
          } else {
              return "You can't access here!";
          }
      }
      
      1. 您也可以在路线上使用
      2. Route::get('example/index', ['middleware' => 'auth', 'uses' => 'example@index']);
        

答案 4 :(得分:2)

使用

Auth::check()

更多此处https://laravel.com/docs/5.2/authentication#authenticating-users确定当前用户是否经过身份验证

答案 5 :(得分:0)

在laravel中,您可以检查用户是否已登录刀片或未登录。 在刀片中使用此代码:


public registerListener<T extends keyof ListenerTypes>(name: T, listener: Listener<T>): void {
    (this.listeners[name] as Listener<T>[]).push(listener);  
}

答案 6 :(得分:0)

您也可以执行以下操作

@guest

//你想让客人看到的都在这里

@else

//为特权用户保留的东西都在这里

@endguest

@guest
//Guest area
@else
//Privileged area
@endguest

答案 7 :(得分:-2)

@if(Auth::user())
// content 
@endif