it-swarm.dev

Laravel: Auth :: user () -> id يحاول الحصول على خاصية كائن غير كائن

تظهر لي الخطأ التالي "محاولة الحصول على خاصية غير كائن" عندما أرسل نموذجًا لإضافة مستخدم ، يبدو أن الخطأ موجود في السطر الأول: Auth :: user () -> معرف ما يلي :

$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.

60
Josh

إذا كنت تستخدم Sentry ، تحقق من المستخدم الذي قام بتسجيل الدخول باستخدام Sentry::getUser()->id. الخطأ الذي تحصل عليه هو أن Auth::user() تُرجع NULL وتحاول الحصول على المعرف من NULL ومن ثم الخطأ trying to get a property from a non-object.

50
Altrim

الآن مع laravel 4.2 ، أصبح من السهل الحصول على هوية المستخدم:

$userId = Auth::id();

هذا كل شيء.

ولكن لاسترداد بيانات المستخدم بخلاف المعرف ، يمكنك استخدام:

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

لمزيد من التفاصيل ، راجع جزء الأمان من الوثائق

48
Dr. MAF

قم بإجراء مصادقة :: check () قبل التأكد من تسجيل دخولك جيدًا:

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

المعرف هو protected ، ما عليك سوى إضافة طريقة عامة في /models/User.php

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

لذلك يمكنك أن نسميها

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

تذكر allways لاختبار إذا تم تسجيل المستخدم ...

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

تحقق من route لمعرفة الوظيفة التي تستخدمها Auth::user() ، للحصول على بيانات Auth :: user () ، يجب أن تكون الوظيفة داخل webRoute::group(['middleware' => 'web'], function () {});.

6
Ashwani Panwar

في Laravel 5.6 أستخدم

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

كما الاقتراح الآخر

Auth::id()

يبدو أنه ينطبق على الإصدارات القديمة من Laravel 5.x ولم يعمل من أجلي.

5
frankfurt-laravel

لا تنسى أبدا أن تشمل:

use Illuminate\Http\Request;   

ثم ابحث عن المعرف باستخدام طريقة الطلب:

$id= $request->user()->id;
4
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 - والذي تستخدمه للحصول على (جديد) معرف المستخدم الذي تم تسجيل دخوله في بقية التطبيق. هذه مشكلة ، وأعتقد ما قد تسأل عنه. فعلت هذا النوع من الاختراق cludgy في 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() 

إعطاء معرف المستخدم المصرح به

2
Md Sifatul Islam