namespace App\Policies;
use App\Models\Site; use App\Models\User; use Illuminate\Auth\Access\Response;
class SitePolicy {
public function view(User $user, Site $site): bool {
dd('ihhhh');
}
}
Route::get('/view/{id}', 'view' )->name('sites.view')->can('view', 'site');
use App\Models\Site; use App\Policies\SitePolicy; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Gate; class AppServiceProvider extends ServiceProvider { public function register(): void { } public function boot(): void { Gate::guessPolicyNamesUsing(function (string $site) { }); } }
我试图限制用户查看分配给其他用户的“站点”。用户只能看到分配给它的“站点”。 我试图使用 Laravel 11 门和策略来实现它,但我遇到了麻烦。 任何帮助,将不胜感激。 我附上了策略、路线和appservice提供的代码供参考。
策略中授权用户配置错误
确保您的用户已登录,或者策略允许 客人。如果您的政策不允许访客入住,请使用 策略将不会被执行并且请求将被阻止。
// Allows guests
public function view(?User $user, Site $site): bool;
// Does NOT allow guests
public function view(User $user, Site $site): bool;
错误的中间件定义
确保路线定义正确:
Route::get('/view/{site:id}', 'view' )->name('sites.view')->can('view',
'site');
如果你只使用
{id}
,Laravel 将不知道该参数是 App\Models\Site
,并且将无法调用正确的策略。