响应内容必须是一个字符串或对象实现 __toString(), "boolean" 在 laravel 5.4 中给出
The Response content must be a string or object implementing __toString(), "boolean" given in laravel 5.4
我在 laravel 中使用 Sentinel 包进行高级身份验证。我可以正确注册,但是当我要登录时出现错误,例如 - 'The Response content must be a string or object implementing __toString(), "boolean" given.' 请任何人帮助我。
下面是我的路线:
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();
}
Sentinel::check()
return 一个布尔值,当用户通过身份验证时它 return 否则为 false。
https://cartalyst.com/manual/sentinel/2.0#sentinel-check
您可以使用 if 语句来 return 响应:
if(Sentinel::check()){
// authenticated
} else {
// not authenticated
return redirect()->back();
}
这里有一件关于 laravel 响应的有趣事情。无论你从 laravel 控制器 return 作为响应,它都会尝试将 array/object 转换为字符串。但是可以通过名为 __toString()
的 PHP 魔术方法将对象转换为字符串。
因为您没有 returning 一个实现了 __toString()
方法的对象,所以您收到了这个错误。
如果你真的想看到 Sentinel::check()
的输出,那么你可以使用 dd(Sentinel::check())
而不是 returning 它。此外,如果你真的想要,你甚至可以 return 它就像 ['sentinelCheck' => Sentinel::check()]
一样。
同样的事情发生在我身上。修复了将数组发送为 return.
时的问题
控制器
return ['status' => true, 'msg' => 'mesaj', 'data' => 'datalar'];
我在 laravel 中使用 Sentinel 包进行高级身份验证。我可以正确注册,但是当我要登录时出现错误,例如 - 'The Response content must be a string or object implementing __toString(), "boolean" given.' 请任何人帮助我。
下面是我的路线:
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();
}
Sentinel::check()
return 一个布尔值,当用户通过身份验证时它 return 否则为 false。
https://cartalyst.com/manual/sentinel/2.0#sentinel-check
您可以使用 if 语句来 return 响应:
if(Sentinel::check()){
// authenticated
} else {
// not authenticated
return redirect()->back();
}
这里有一件关于 laravel 响应的有趣事情。无论你从 laravel 控制器 return 作为响应,它都会尝试将 array/object 转换为字符串。但是可以通过名为 __toString()
的 PHP 魔术方法将对象转换为字符串。
因为您没有 returning 一个实现了 __toString()
方法的对象,所以您收到了这个错误。
如果你真的想看到 Sentinel::check()
的输出,那么你可以使用 dd(Sentinel::check())
而不是 returning 它。此外,如果你真的想要,你甚至可以 return 它就像 ['sentinelCheck' => Sentinel::check()]
一样。
同样的事情发生在我身上。修复了将数组发送为 return.
时的问题控制器
return ['status' => true, 'msg' => 'mesaj', 'data' => 'datalar'];