laravel-nova - Laravel 应用程序身份验证与 Laravel nova 身份验证冲突
问题描述
我有带有 Laravel auth 的 Laravel Web 应用程序,还有用于内容管理 (CMS) 的 Laravel Nova。Web 用户和 Laravel nova 用户使用相同的 Laravel 默认 MySQL 用户表。
当用户从 web 或从 nova 进行注册或登录时,Laravel 会在 Laravel 应用程序和 Laravel nova 中登录该用户。
区分 web 和 nova 用户的最佳实践是什么?
解决方案
您可以在数据库中将用户标记为管理员,然后使用该标志授权用户在 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());
推荐阅读
- java - 如何使用 Selenium 和 Java 提取文本?
- laravel - Laravel 测试在附加多对多关系时中断
- javascript - JavaScript 中的导入/导出模块
- sass - sass / scss - 创建类快捷方式
- qt - 当我尝试创建一个新的 qml 文件时,为什么我得到一个 QmlCachedGenerateCode?
- python - Colab 的使用限制持续多长时间?
- anki - 如何通过 JavaScript 标记卡片的好/坏?
- node.js - 如何使用 node.js 在标头中传递 JWT 令牌来执行 GET 请求
- ios - 在iOS swift中将图像上传到服务器
- python - 张量流分类尝试中的损失没有减少