Saya mendapatkan kesalahan berikut "mencoba mendapatkan properti dari non-objek" ketika saya mengirimkan formulir untuk menambahkan pengguna, kesalahan tersebut tampaknya ada di baris pertama: Auth :: user () -> id dari berikut ini :
$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);
Ada ide? Saya telah mencari sebentar dan semua yang saya lihat mengatakan ini seharusnya berfungsi dengan baik. Pengguna saya masuk menggunakan bundel otentikasi Sentry 2.
Auth::user();
? Auth :: user () mengembalikan pengguna yang saat ini masuk, jadi Anda mencoba mendaftarkan pengguna yang harus masuk, itu tidak masuk akalSentry::getUser()->id
. Kesalahan yang Anda dapatkan adalah bahwaAuth::user()
mengembalikan NULL dan mencoba untuk mendapatkan id dari NULL maka kesalahan tersebuttrying to get a property from a non-object
.Jawaban:
Jika Anda menggunakan
Sentry
periksa pengguna yang masuk denganSentry::getUser()->id
. Kesalahan yang Anda dapatkan adalah bahwaAuth::user()
mengembalikan NULL dan mencoba untuk mendapatkan id dari NULL maka kesalahan tersebuttrying to get a property from a non-object
.sumber
Sekarang dengan laravel 4.2 mudah untuk mendapatkan id pengguna:
$userId = Auth::id();
itu semuanya.
Tetapi untuk mengambil data pengguna selain id, Anda menggunakan:
$email = Auth::user()->email;
Untuk lebih jelasnya, periksa bagian keamanan dari dokumentasi
sumber
Lakukan Auth :: check () sebelum memastikan bahwa Anda masuk dengan benar:
if (Auth::check()) { // The user is logged in... }
sumber
@if(Auth::check()) {{Auth::user()->id}} @endif
(ini berguna jika Anda ingin mendapatkan ID pengguna untuk javascript / ajax)id adalah
protected
, tambahkan saja metode publik di file/models/User.php
public function getId() { return $this->id; }
jadi Anda bisa menyebutnya
$id = Auth::user()->getId();
ingat selalu untuk menguji apakah pengguna login ...
if (Auth::check()) { $id = Auth::user()->getId(); }
sumber
Di Laravel 5.6 saya gunakan
use Auth; $user_id = Auth::user()->id;
sebagai saran lainnya
tampaknya berlaku untuk versi Laravel 5.x yang lebih lama dan tidak berhasil untuk saya.
sumber
Auth::id()
berfungsi dengan baik di versi laravel 5.7.Periksa Anda
route
untuk fungsi yang Anda gunakanAuth::user()
, Untuk mendapatkan data Auth :: user () fungsi harus berada di dalamweb
middlewareRoute::group(['middleware' => 'web'], function () {});
.sumber
Jangan pernah lupa untuk memasukkan dan mencoba menggunakan middleware auth:
use Illuminate\Http\Request;
Kemudian temukan id menggunakan metode permintaan:
$id= $request->user()->id;
sumber
Anda dapat mengakses pengguna yang diautentikasi melalui fasad Auth:
use Illuminate\Support\Facades\Auth; // Get the currently authenticated user... $user = Auth::user(); // Get the currently authenticated user's ID... $id = Auth::id();
sumber
gunakan Illuminate \ Support \ Facades \ Auth;
Di kelas:
protected $user;
Kode ini berfungsi untuk saya
Dalam konstruksi:
$this->user = User::find(Auth::user()->id); In function: $this->user->id; $this->user->email;
dll ..
sumber
Jika ada yang mencari laravel 5>
berikan id pengguna resmi
sumber
Anda harus memeriksa apakah pengguna login?
Auth::check() ? Auth::user()->id : null
sumber
Pertanyaan dan contoh kode Anda agak kabur, dan saya yakin pengembang lain berfokus pada hal yang salah. Saya membuat aplikasi di Laravel, telah menggunakan tutorial online untuk membuat pengguna baru dan otentikasi, dan sepertinya telah memperhatikan bahwa ketika Anda membuat pengguna baru di Laravel, tidak ada objek Auth yang dibuat - yang Anda gunakan untuk mendapatkan (baru) ID pengguna yang masuk di aplikasi lainnya. Ini adalah masalah, dan saya percaya apa yang mungkin Anda tanyakan. Saya melakukan peretasan rumit semacam ini di 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);
Tidak harus membuat dan mengautentikasi, tetapi saya tidak tahu harus berbuat apa lagi.
sumber
Pengguna cek pertama masuk dan kemudian
if (Auth::check()){ //get id of logged in user {{ Auth::getUser()->id}} //get the name of logged in user {{ Auth::getUser()->name }} }
sumber
Untuk Laravel 6.X Anda dapat melakukan hal berikut:
$user = Auth::guard(<GUARD_NAME>)->user(); $user_id = $user->id; $full_name = $user->full_name;
sumber
Di Laravel 8.6, berikut ini berfungsi untuk saya di pengontrol:
$id = auth()->user()->id;
sumber
Anda dapat mencoba :
$id = \Auth::user()->id
sumber
if(Auth::check() && Auth::user()->role->id == 2){ $tags = Tag::latest()->get(); return view('admin.tag.index',compact('tags')); }
sumber
Ini bekerja dengan saya:
echo Auth::guard('guard_name')->user()->id;
sumber