laravel - 如何在没有用户模型的情况下使用策略?

标签 laravel laravel-nova

今天我遇到了一个问题。我的网站上有多个级别的身份验证,在我的 nova 上,我连接到管理员表。我如何使用它来声明除用户之外的策略?

我尝试这样做:

/**
     * Determine whether the user can view any models.
     *
     * @param Administrator $admin
     * @return mixed
     */
    public function viewAny(Administrator $admin)
    {
        return $admin->superadmin == 1;
    }

问题是我在等待时收到一条错误消息,告诉我我没有使用用户模型?我该如何解决这个问题?我只想向在 1 上拥有“superadmin”列的管理员授予对 nova 页面的访问权限...

error

我的 table 是这样的。它被命名为“管理员”。

table

我在这个问题上困扰了很长一段时间,但没有真正找到解决方案......我必须使用用户模型吗?

最佳答案

您可以使用访客用户

来自 Laravel 文档

访客用户 默认情况下,如果传入的 HTTP 请求不是由经过身份验证的用户发起的,则所有门和策略都会自动返回 false。但是,您可以通过声明“可选”类型提示或为用户参数定义提供空默认值来允许这些授权检查传递到您的门和策略:

<?php

namespace App\Policies;

use App\Models\Post;
use App\Models\User;

class PostPolicy
{
    /**
     * Determine if the given post can be updated by the user.
     *
     * @param  \App\Models\User  $user
     * @param  \App\Models\Post  $post
     * @return bool
     */
    public function update(?User $user, Post $post)
    {
        return optional($user)->id === $post->user_id;
    }
}

关于laravel - 如何在没有用户模型的情况下使用策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64267058/

相关文章:

PHP 使用安全浏览 API 检查网站 URL

php - 扩展 Laravel 5.5/5.6 蓝图

Laravel Nova - 重新加载资源的索引 View

laravel - 如何在 Laravel Nova 中创建两步表单?

mysql - Laravel 公共(public)文件夹 Php Artisan

php - Laravel 5.2 将用户 IP 地址保存到数据库

php - 如何使用相同名称的输入类型更新多个 mysql 行

php - 如何在 Laravel Nova 资源标题中使用 html

php - 使用 Laravel Nova 显示指标趋势的问题 - 参数太少

laravel-nova - 如何在 Laravel Nova 仪表板上自定义卡片的高度?