Response内容必须是实现__toString()的字符串或对象,在laravel 5.4中给出“boolean”

问题描述 投票:0回答:3

我在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();
}
php laravel-5.4 sentinel
3个回答
1
投票

关于laravel响应,这是一个有趣的事情。你从laravel控制器返回什么作为响应它试图将该数组/对象转换为字符串。但是通过名为__toString()的PHP魔术方法可以将对象转换为字符串。

由于您没有返回具有__toString()方法实现的对象,因此您收到此错误。

如果你真的想看到Sentinel::check()的输出,那么你可以使用dd(Sentinel::check())而不是返回它。此外,如果你真的想要,你甚至可以像['sentinelCheck' => Sentinel::check()]一样返回它。


0
投票

Sentinel::check()返回一个布尔值,当用户通过身份验证时返回用户,否则返回false。

https://cartalyst.com/manual/sentinel/2.0#sentinel-check

您可以使用if语句返回响应:

if(Sentinel::check()){
    // authenticated
} else {
    // not authenticated
    return redirect()->back();
}

0
投票

这样的事情我也经历过。修复了发送数组作为返回时的问题。

调节器

return ['status' => true, 'msg' => 'mesaj', 'data' => 'datalar'];
© www.soinside.com 2019 - 2024. All rights reserved.