[英]Laravel9 Auth::user() retuns null
I am learning Laravel Framework.我正在学习 Laravel 框架。 I am trying to redirect the user to Dashboard and get the user credential right after s/he is successfully registered.
我正在尝试将用户重定向到仪表板并在他/她成功注册后立即获取用户凭据。 The problem is that I can register but when directed to Dashboard I get null object of a just registered user.
问题是我可以注册,但是当定向到仪表板时,我得到了一个刚刚注册用户的 null object。
DashboardController.php仪表板控制器.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class DashboardController extends Controller
{
public function index()
{
dd(Auth::user());
// or dd(auth()->user());
return view('dashboard');
}
}
My routes in web.php我在web.php的路线
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\Auth\RegisterController;
Route::get('/dashboard', [DashboardController::class,'index'])->name('dashboard');
Route::get('/register', [RegisterController::class,'index'])->name('register');
Route::post('/register', [RegisterController::class,'store']);
RegisterController.php RegisterController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class RegisterController extends Controller
{
public function index()
{
return view('auth.register');
}
public function store(Request $request)
{
$this->validate($request, [
'name'=> 'required|max:255',
'username' => 'required|max:255',
'email' => 'required|email|max:255',
'password' => 'required|confirmed',
]);
User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
return redirect()->route('dashboard');
}
}
User.php Model用户.php Model
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
protected $fillable = [
'name',
'email',
'password',
'username',
];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
I am using mysql db.我正在使用 mysql 数据库。 Thanks in advance.
提前致谢。
Try using any of the below Auth
methods.尝试使用以下任何
Auth
方法。
1st第一
$user = User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
// here we're authenticating newly created user
Auth::login($user);
2nd第二
// newly created user email & password can be passed in an attempt function.
Auth::attempt(['email' => $email, 'password' => $password])
3rd第三
$user = User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
// we can use loginUsingId like this
Auth::loginUsingId($user->id);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.