我想在 Laravel 8 中使用 Gates,但我们使用的是自定义身份验证,所以 Laravel 不知道要传递给 Gate 的 $user 记录。那么如何告诉 Laravel 某个用户当前已登录,所以会使用正确的用户记录呢?
谢谢。
我想在 Laravel 8 中使用 Gates,但我们使用的是自定义身份验证,所以 Laravel 不知道要传递给 Gate 的 $user 记录。那么如何告诉 Laravel 某个用户当前已登录,所以会使用正确的用户记录呢?
谢谢。
我不知道您的验证过程是在 AppServiceProvider 文件中还是在控制器中完成的。
但我认为在控制器中验证后,您可以使用该功能
Auth::setUser($user)
所以这就是我所做的:
在\App\Models
中,我创建了一个扩展的 User 类Illuminate\Foundation\Auth\User
我还在该类中设置了受保护的属性,$table
并$primaryKey
指定了我的自定义表名和主键名。
然后在我的中间件中,我检查用户是否登录,如果他或她是,然后我运行这个:
\Illuminate\Support\Facades\Auth::login(\App\Models\User::find($userId))
当我做这一切时,我可以Auth::user()
在任何我想要的地方使用。据推测,gates 现在无需每次都指定用户即可工作。