今天我遇到了一个问题。我的网站上有多个级别的身份验证,在我的 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 页面的访问权限...
我的 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/