我在laravel中使用Sentinel包进行高级身份验证。我可以正确注册,但是当我要登录时,这里的错误就像 - '响应内容必须是实现__toString()的字符串或对象,“boolean”给出。请有人帮帮我。
以下是我的路线:
Route::get('/login', 'LoginController@login');
Route::post('/login', 'LoginController@postLogin');
这是我的控制器:
public function login(){
return view('authentication.login');
}
public function postLogin(Request $request){
Sentinel::authenticate($request->all());
return Sentinel::check();
}
关于laravel响应,这是一个有趣的事情。你从laravel控制器返回什么作为响应它试图将该数组/对象转换为字符串。但是通过名为__toString()
的PHP魔术方法可以将对象转换为字符串。
由于您没有返回具有__toString()
方法实现的对象,因此您收到此错误。
如果你真的想看到Sentinel::check()
的输出,那么你可以使用dd(Sentinel::check())
而不是返回它。此外,如果你真的想要,你甚至可以像['sentinelCheck' => Sentinel::check()]
一样返回它。
Sentinel::check()
返回一个布尔值,当用户通过身份验证时返回用户,否则返回false。
https://cartalyst.com/manual/sentinel/2.0#sentinel-check
您可以使用if语句返回响应:
if(Sentinel::check()){
// authenticated
} else {
// not authenticated
return redirect()->back();
}
这样的事情我也经历过。修复了发送数组作为返回时的问题。
调节器
return ['status' => true, 'msg' => 'mesaj', 'data' => 'datalar'];