首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 8 auth返回null

Laravel 8 auth返回null
EN

Stack Overflow用户
提问于 2021-10-01 10:48:07
回答 2查看 274关注 0票数 0

问题:

在我的索引页面上,经过身份验证的用户和来宾应该能够查看和使用

  • ,除非他们想保存某些内容。为了保存数据,我尝试登录,然后被重定向到一个经过身份验证的页面,这是一个配置文件页。我尝试在配置文件页上转储Auth::user(),它返回登录数据的用户,在索引页上再次转储它,然后返回null.

我用的是最新版本的Laravel。

我搜索了一些同样的问题,最近的一个问题就是这个Auth::user() returns null。我试着遵循提供的答案,但仍然返回null。

web.php

代码语言:javascript
运行
复制
Route::group(['middleware' => 'web'], function () {
    Route::get('/', [IndexController::class, 'index'])->name('index.page');

    Auth::routes();
    
    Route::group(['middleware' => ['auth:user']], function() {
        Route::get('/user/profile', [UserController::class, 'profile'])->name('user.profile');
    });

    Route::group(['prefix' => 'admin', 'middleware' => ['auth:admin']], function() {
        Route::get('dashboard',[DashboardController::class, 'index'])->name('admin.dashboard');

    });
})

auth.php

代码语言:javascript
运行
复制
'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'user' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],
'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
        'throttle' => 60,
    ],
    'admins' => [
        'provider' => 'admins',
        'table' => 'password_resets',
        'expire' => 15,
   ],
],

这是我对中间件所做的唯一修改。

RedirectIfAuthenticated.php

代码语言:javascript
运行
复制
foreach ($guards as $guard) {
   if ($guard === "admin" && Auth::guard($guard)->check()) {
       return redirect('/admin/dashboard');
   }

   if ($guard === "user" && Auth::guard($guard)->check()) {
       return redirect('/user/profile');
   }

   if (Auth::guard($guard)->check()) {
       return redirect('/');
   }
}

我为用户和管理模型添加了$guard

User.php

代码语言:javascript
运行
复制
protected $guard = 'user';

Admin.php

代码语言:javascript
运行
复制
protected $guard = 'admin';

如果您有任何问题,请随时提出并感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2021-10-01 11:32:19

但是我想定制的Auth.php有一个问题

代码语言:javascript
运行
复制
 foreach ($guards as $guard) {
   if ($guard === "admin" && Auth::guard($guard)->check()) {
       return redirect('/admin/dashboard');
   }else{
       if ($guard === "user" && Auth::guard($guard)->check()) {
          return redirect('/user/profile');
       }else{
          return redirect('/');
       }   
   }

}
票数 0
EN

Stack Overflow用户

发布于 2021-10-01 10:59:58

我可以分享对我有用的解决方案。我从护照转到桑克顿。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69404619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档