web-dev-qa-db-ja.com

Laravel:Auth :: user()-> idが非オブジェクトのプロパティを取得しようとしています

ユーザーを追加するフォームを送信すると、「非オブジェクトのプロパティを取得しようとしている」というエラーが表示されます。エラーは最初の行にあるようです:Auth :: user()-> id of the :

$id = Auth::user()->id;
$currentuser = User::find($id);
$usergroup = $currentuser->user_group;
$group = Sentry::getGroupProvider()->findById($usergroup);

$generatedPassword = $this->_generatePassword(8,8);
$user = Sentry::register(array('email' => $input['email'], 'password' => $generatedPassword, 'user_group' => $usergroup));

$user->addGroup($group);

何か案は?私はしばらくの間検索しましたが、表示されるすべてのものはこれでうまくいくはずです。ユーザーがSentry 2認証バンドルを使用してログインしています。

61
Josh

Sentryを使用している場合は、Sentry::getUser()->idでログインしているユーザーを確認してください。取得するエラーは、Auth::user()がNULLを返し、NULLからidを取得しようとするため、エラーtrying to get a property from a non-objectが発生することです。

51
Altrim

Laravel 4.2では、ユーザーIDを簡単に取得できます。

$userId = Auth::id();

それがすべてです。

ただし、id以外のユーザーのデータを取得するには、次を使用します。

$email = Auth::user()->email;

詳細については、 ドキュメントのセキュリティ部分 を確認してください

50
Dr. MAF

ログインする前にAuth :: check()を実行してください:

if (Auth::check())
{
    // The user is logged in...
}
39
jody_lognoul

idはprotectedです。パブリックメソッドを/models/User.phpに追加するだけです

public function getId()
{
  return $this->id;
}

だからあなたはそれを呼び出すことができます

$id = Auth::user()->getId();

ユーザーがログインしているかどうかを常にテストしてください...

if (Auth::check())
{
     $id = Auth::user()->getId();
}
17
maztch

Laravel 5.6で使用します

use Auth;
$user_id = Auth::user()->id;

他の提案として

Auth::id()

Laravel 5.xの古いバージョンに適用されるようで、私にとってはうまくいきませんでした。

7

Auth::user()を使用している関数のrouteを確認します。Auth:: user()データを取得するには、関数はwebミドルウェアRoute::group(['middleware' => 'web'], function () {});内にある必要があります。

6
Ashwani Panwar

含めることを忘れないでください:

use Illuminate\Http\Request;   

次に、requestメソッドを使用してIDを見つけます。

$id= $request->user()->id;
5
rashedcs

illuminate\Support\Facades\Authを使用します。

クラスで:

protected $user;

このコードは私にとってはうまくいきます

構成内:

$this->user = User::find(Auth::user()->id);

In function:
$this->user->id;
$this->user->email;

等..

4
l3okor

あなたの質問とコードサンプルは少しあいまいで、他の開発者は間違ったことに集中していると思います。私はLaravelでアプリケーションを作成していますが、オンラインチュートリアルを使用して新しいユーザーと認証を作成しましたが、Laravelで新しいユーザーを作成するとAuthオブジェクトが作成されないことに気づいたようです-(新しい)アプリケーションの残りの部分でログインしているユーザーのID。これは問題であり、あなたが尋ねているかもしれないことを信じています。私はuserController :: storeでこの種のずさんなハックをしました:

$user->save();

Session::flash('message','Successfully created user!');

//KLUDGE!! rest of site depends on user id in auth object - need to force/create it here
Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password')), true);

Redirect::to('users/' . Auth::user()->id);

作成して認証する必要はありませんが、他に何をすべきかわかりませんでした。

2
Andrew Koper

最初にチェックしたユーザーがログインしてから

if (Auth::check()){
    //get id of logged in user
    {{ Auth::getUser()->id}}

    //get the name of logged in user
    {{ Auth::getUser()->name }}
}
2
Abid Shah

誰かがlaravel 5を探しているなら>

 Auth::id() 

許可されたユーザーのIDを与える

2

ユーザーがログインしていることを確認する必要がありますか?

Auth::check() ? Auth::user()->id : null
1
Vahid Alvandi