php-Laravel 5:ルートでAuth :: user()->idを使用する方法
phpLaravelフレームワークを使用してアプリケーションを作成しようとしています。ルートファイルAuth:: user()-> idを使用する場合>「非オブジェクトのプロパティを取得しようとしています」というエラーが発生しました。修正するにはどうすればよいですか?
これは私のルートファイルです
`
<?php
/*
|
`
答え :
答え :
解決策:
何かを実行したい場合は、laravel5ミドルウェアを使用する必要があります。
1.- php artisan make:middlewarenewMiddleware。
2.-ミドルウェアプロパティを設定して、必要なすべてのルートにミドルウェアを追加します。
Route::get('test', ['before' => 'newMiddleware', function(){
//
}]);
3.-今、あなたが達成しようとしていることを適切な方法で行います
$user_id = Auth::user()->id()
if($user_id){
$variable = \App\Model::where('site_id', '=', $user_id)
}
return $variable
4.-ルート関数/コントローラーに必要な値が設定されたので、他のデータと一緒にビューに渡すことができます。
答え :
解決策:
ルートを定義する必要があります。そうしないと、機能しません
Route::get('/testauth', function()
{
var_dump(Auth::user());
// your code here
});
ここで、「testauth」ルートをヒットします。動作しているはずです。
答え :
解決策:
認証ミドルウェアが実行されていないため、ルートモデルバインディングで認証されたユーザーにアクセスできません。したがって、いくつかの回避策が提案されているディスカッションスレッドを参照してください。
答え :
解決策:
ユーザーが認証されていることを確認する必要があります
$common_variable=Auth::check() ?App\MyModel::where('site_id',Auth::user()->id)->count() : 0;
認証されていない場合、Auth :: user()は常にnullを返し、nullオブジェクトでidを参照しているため、エラーが発生します
答え :
解決策:
これが私がこれを行った方法です。ビューを要求されたオブジェクトの所有者(私の場合は「APIキー」)に制限したかったのです。これを行うためにLaravelのルートモデルバインディングを使用しました。
Route::model('apikeys', 'Apikey');
Route::bind('apikeys', function($value, $route) {
return Apikey::whereSlug($value)->where('users_id', '=', Auth::user()->id)->where('approved', '=', true)->where('deleted', '=', false)->first();
});
Route::resource('apikeys', 'ApikeysController');
この場合、要求された「スラッグ」の値(つまり、APIキーのフレンドリURL)を渡してから、認証されたユーザーID、承認済み= true、および削除=false。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。