每次在laravel中调用函数之前,我都会检查请求ajax链接的人是否已登录。 我必须将此检查功能放在每个函数中以使其工作。如果我在函数外写,它只是打印
请登录以查看此内容的工作。
即使我已登录。有没有办法将检查功能放在控制器文件的开头,所以我不必每次都在函数内部写它。
function index()
if(!\Auth::check())
return response()->json(array(
'status'=>'error',
'message'=> 'Please login to see this content'
));
return redirect('/login')->with('msgstatus', 'error')->with('messagetext','Please login to see this content'); }
function loadcalendar()
if(!\Auth::check())
return response()->json(array(
'status'=>'error',
'message'=> 'Please login to see this content'
));
//somedefinition
}
function savecalendar()
if(!\Auth::check())
return response()->json(array(
'status'=>'error',
'message'=> 'Please login to see this content'
));
//somedefinition
}
答案 0 :(得分:1)
来自Laravel文档:
即使可以确定用户是否经过身份验证 使用check方法,您通常会使用中间件进行验证 在允许用户访问之前,用户已通过身份验证 某些路线/控制器。要了解更多相关信息,请查看 关于保护路线的文件。
https://laravel.com/docs/5.4/authentication#protecting-routes
有内置中间件可以做到这一点:
定义:
public function __construct()
{
$this->middleware('auth');
}
例如,在控制器中,将检查该控制器上针对auth中间件的每个方法。
答案 1 :(得分:1)
是。你可能想要在这里构建:
public function __construct()
{
$this->middleware('auth');
}
现在每项功能都需要验证。
答案 2 :(得分:1)
在你的控制器中, 添加此构造函数方法。这将使用内置的Auth中间件并将任何未登录的用户重定向到登录页面
blade.php
答案 3 :(得分:1)
听起来你正在寻找middleware。
开箱即用的laravel有一个auth
中间件,用于检查用户是否已登录。要保护控制器上的特定路线,只需将其添加到您的路线中:
Route::get('/', 'YourController@index')->middleware('auth');
或在构造函数或控制器中定义它:
public function __construct()
{
$this->middleware('auth');
}
使用构造函数方法时,您还可以指定应该检查中间件的方法。
public function __construct()
{
$this->middleware('auth');
$this->middleware('log')->only('index');
$this->middleware('subscribed')->except('store');
}
请参阅文档中的Controller Middleware。