You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade中如何判断用户无指定数组内的权限?

在Laravel Blade中实现@inverseCanAny反向权限判断指令

要实现你想要的反向@canany逻辑,最直接的方式是自定义Blade指令,步骤如下:

1. 注册自定义指令

在app/Providers/AppServiceProvider.php的boot方法中添加以下代码,注册@inverseCanAny和@endInverseCanAny指令:

use Illuminate\Support\Facades\Blade;

public function boot()
{
    // 注册@inverseCanAny指令
    Blade::directive('inverseCanAny', function ($permissions) {
        // 逻辑:用户未认证 或 不具备任一指定权限时,执行指令内的内容
        return "<?php if (!auth()->check() || !auth()->user()->canAny({$permissions})): ?>";
    });

    // 注册@endInverseCanAny闭合指令
    Blade::directive('endInverseCanAny', function () {
        return "<?php endif; ?>";
    });
}

注:如果你的场景仅针对已登录用户判断权限(排除游客),可以把逻辑简化为!auth()->user()->canAny({$permissions}),去掉!auth()->check() ||即可。

2. 在Blade模板中使用

现在你可以直接用你设想的简洁写法:

@inverseCanAny(['store', 'update'])
    <p>你没有创建或编辑权限,请联系管理员</p>
@endInverseCanAny

这个指令的逻辑完全等价于你最初的@canany加@else的写法,但结构更清晰,符合你的需求。

内容的提问来源于stack exchange,提问作者Satrio Akbar Sudigdo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:52:05