【问题标题】: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 用户/管理员是解决此问题的最佳选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 2019-01-31
        • 2016-05-16
        • 2016-08-03
        • 2011-11-30
        相关资源
        最近更新 更多