【问题标题】:Laravel app auth conflict with Laravel nova authLaravel 应用程序身份验证与 Laravel nova 身份验证冲突
【发布时间】:2020-04-13 15:02:15
【问题描述】:
我有带有 Laravel auth 的 Laravel Web 应用程序,还有用于内容管理 (CMS) 的 Laravel Nova。 Web 用户和 Laravel nova 用户使用相同的 Laravel 默认 MySQL 用户表。
当用户从 web 或从 nova 进行注册或登录时,Laravel 会同时在 Laravel 应用程序和 Laravel nova 中登录该用户。
区分 web 和 nova 用户的最佳做法是什么?
【问题讨论】:
标签:
laravel-nova
laravel-authorization
【解决方案1】:
您可以在您的数据库中将用户标记为管理员,然后使用该标志授权用户在您的 NovaServiceProvider 中登录 nova
/**
* Register the Nova gate.
*
* This gate determines who can access Nova in non-local environments.
*
* @return void
*/
protected function gate()
{
Gate::define('viewNova', function ($user) {
return $user->admin;
});
}
或者您甚至可以将您的管理员电子邮件放入一个数组(硬编码)或另一个类似的表格中
return in_array($user->email, ["john@doe.com"]);
return in_array($user->email, \App\Models\Admin::all()->pluck('email')->toArray());
【解决方案2】:
在新表中分离 nova 用户/管理员是解决此问题的最佳选择。