繁体   English   中英

Laravel9 Auth::user() 返回 null

[英]Laravel9 Auth::user() retuns null

我正在学习 Laravel 框架。 我正在尝试将用户重定向到仪表板并在他/她成功注册后立即获取用户凭据。 问题是我可以注册,但是当定向到仪表板时,我得到了一个刚刚注册用户的 null object。

空对象

仪表板控制器.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');         
    }
}

我在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

<?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');
    }
}

用户.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',
    ];
}

我正在使用 mysql 数据库。 提前致谢。

尝试使用以下任何Auth方法。

第一

$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);

第二

// newly created user email & password can be passed in an attempt function.
Auth::attempt(['email' => $email, 'password' => $password])

第三

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM