首页 > 解决方案 > Laravel 应用程序身份验证与 Laravel nova 身份验证冲突

问题描述

我有带有 Laravel auth 的 Laravel Web 应用程序,还有用于内容管理 (CMS) 的 Laravel Nova。Web 用户和 Laravel nova 用户使用相同的 Laravel 默认 MySQL 用户表。

当用户从 web 或从 nova 进行注册或登录时,Laravel 会在 Laravel 应用程序和 Laravel nova 中登录该用户。

区分 web 和 nova 用户的最佳实践是什么?

标签: laravel-novalaravel-authorization

解决方案


您可以在数据库中将用户标记为管理员,然后使用该标志授权用户在 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());

推荐阅读