当前位置: 首页 > 知识库问答 >
问题:

Laravel 8 auth返回null

轩辕煜
2023-03-14

问题:

  • 在我的索引页面上,经过身份验证的用户和来宾应该能够查看和使用该页面,除非他们想保存某些内容。我试图登录以便保存数据,但被重定向到一个经过身份验证的页面,这是一个配置文件页面。我尝试在配置文件页上转储Auth::user(),它返回用户登录的数据,尝试在索引页上再次转储,然后返回null

我正在使用最新版本的Laravel。

我在谷歌上搜索了一些与我遇到的问题相同的问题,最接近的问题是Auth::user()返回null。我尝试按照提供的答案进行操作,但仍然返回null。

web.php

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

'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

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

protected $guard = 'user';

Admin.php

protected $guard = 'admin';

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

共有2个答案

费学
2023-03-14

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

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

}
劳亦
2023-03-14

我可以分享对我有效的解决方案。我从护照换到了避难所。

 类似资料:
  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 我有两个活动和两个布局。当我在第一个活动中显示列表时,一切都正常,并在单击时给出列表中项目的编号,但当我尝试在第二个活动中重复相同的内容时,它会告诉我RecycleServiceClickListener侦听器为空。 适配器: 第一项活动: 第二项活动: 错误: 我不明白为什么在第一种情况下,它正常处理单击,而在第二种情况下,它说RecyclerViewClickListener为null

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?

  • 加载样式表,并在用户单击按钮时将其应用于场景 调用getScene()返回null。 函数所在的类是场景的控制器和根节点,我使用SceneBuilder 2.0,并将类设置为加载fxml的控制器,它是一个。 问题代码是类中的一个成员函数,标记是这样的,我可以通过设置按钮来调用它。 完整的代码可以在https://github.com/SebastianTroy/FactorioManufactur

  • 问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是

  • 问题内容: 我正在使用Servlets&Struts2的混合情况下工作。 我正在调用HTTPServlet,并且正在处理数据。 然后,我需要调用struts API在DB中插入数据。 在那我也使用HTTPSession。 所以我打电话 要获取HttpRequest,然后在该struts动作类中进行会话。 Servlet正在调用Struts Action类。 但 始终返回NULL。 是因为它没有被网

  • 问题内容: 我使用osgi + cdi,并且有以下代码: 而且我有以下tasklist.fxml 但是parent.lookup(“#testComboBox”)返回null。怎么解释呢?我已经多次检查ID的名称。 问题答案: 您可以将所需的逻辑放入控制器类中,而不必使用仅在渲染场景之后才能使用的查找。您可以通过注释将元素从FXML文件注入到控制器类中。 查询通常不可靠,我建议避免使用它们。如果您