【问题标题】:Laravel - Auth User returns nullLaravel - 身份验证用户返回 null
【发布时间】:2021-03-18 09:36:02
【问题描述】:

我正在尝试在用户注册后将其重定向到“仪表板”页面。但是,当我转储并终止 auth()-user() 时,它返回 null。它应该显示我的数据库中经过身份验证的用户的信息。

注册控制器

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RegisterController extends Controller
{
    public function NavRegPage(){
        return view('regPage');
    }

    public function store(Request  $request){
        $data = request()->validate([
            'username' => ['required', 'max:20'],
            'password' => ['required', 'min:5', 'max:20' ],
            'email' => ['required', 'email'],
            'url' => ['required', 'url'],
            'dob' => ['required']
        ]);

        $user = new User();
        $user->username = request('username');
        $user->password = request('password');
        $user->email = request('email');
        $user->url = request('url');
        $user->dob = request('dob');
        $user->save();

        auth()->attempt($request->only('email', 'password'));
        return redirect()->route('dash');
    }

仪表板控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashController extends Controller
{
        public function index(){
            dd(auth()->user());
        }
}

Web.php

use App\Http\Controllers\RegisterController as RegisterController;
use App\Http\Controllers\DashController as DashController;
use Illuminate\Support\Facades\Route;


Route::get('/register', [RegisterController::class, 'NavRegPage']) ->name('register');
Route::get('dash', [\App\Http\Controllers\DashController::class, 'index']) ->name('dash');
Route::get('/', function () {
    return view('index');
});

Route::post('/register', [RegisterController::class, 'store'])->name('register');

我希望 dd 向我显示经过身份验证的用户信息,以便我可以继续我的工作。 谢谢

【问题讨论】:

  • 你需要在Route::get('dash')->middleware('auth')中应用auth中间件
  • 你能告诉我我对 Laravel 真正陌生的地方吗

标签: laravel authentication


【解决方案1】:

在 web.php 中

Route::get('dash', [\App\Http\Controllers\DashController::class, 'index']) ->name('dash')->middleware('auth');

应用 ->middleware('auth'); 然后您的 auth() 将在该控制器上工作

【讨论】:

  • 添加中间件身份验证会给我这个错误; Symfony\Component\Routing\Exception\RouteNotFoundException Route [login] 未定义。
  • 是的,这是正确的,我没有登录它重定向到登录页面,你删除登录页面所以
  • 那么我该如何更改它,我没有提到要重定向到“登录”的任何内容,我在哪里可以将其更改为“仪表板”页面?
  • dashboard 是一个受保护的网址,为什么如果用户未登录,您将重定向到仪表板
  • 所以我要做的是,一旦填写了注册表单,并且所有表单数据都保存在我的 MySQL 数据库中,我想将用户带到他所在的仪表板页面'将按照他刚刚注册的方式登录。为此,我需要使用 auth()->user 对用户进行身份验证
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 2021-08-23
  • 2018-12-09
  • 2017-06-12
  • 2018-10-30
  • 2023-02-14
相关资源
最近更新 更多