2017-08-16 25 views
0

lanvelで高度な認証にSentinelパッケージを使用しています。私は正しく登録することができますが、私がログインしようとするとき、ここではエラーが発生します - 'レスポンスの内容は、__toString()を実装する文字列またはオブジェクトでなければなりません。誰か助けてください。ここでレスポンスの内容は、__toString()を実装する文字列またはオブジェクトである必要があります。laravel 5.4で指定された "ブール値"

は私のルートは怒鳴るさ:

public function login(){ 
    return view('authentication.login'); 
} 

public function postLogin(Request $request){ 
    Sentinel::authenticate($request->all()); 
    return Sentinel::check(); 
} 

答えて

1

はlaravel応答についての興味深いものです。レスポンスとしてlaravelコントローラから返されたものは、その配列/オブジェクトを文字列に変換しようとします。しかし、オブジェクトを文字列に変換することは、__toString()というPHPマジックメソッドで可能です。

__toString()メソッドの実装を持つオブジェクトを返さないので、このエラーが発生します。

Sentinel::check()の出力を実際に表示したい場合は、それを返す代わりにdd(Sentinel::check())を使用できます。あなたが本当に欲しいなら、あなたは['sentinelCheck' => Sentinel::check()]のようにそれを返すことさえできます。

0

Sentinel::check()リターンブール、ユーザーはそれがそうでない場合はfalseを返し、ユーザーが認証されている:

Route::get('/login', '[email protected]'); 
Route::post('/login', '[email protected]'); 

はここで怒鳴る私のコントローラです。

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']; 
関連する問題