【问题标题】:Checking for permissions using Romanbican/roles in Laravel 5.1 doesn´t work在 Laravel 5.1 中使用 Romanbican/roles 检查权限不起作用
【发布时间】:2016-09-25 00:16:51
【问题描述】:

我正在做一个项目,我使用 Romanbican/roles 包控制视图、控制器等。

我已经设置了角色包工作所需的所有配置,我已经设置了每个用户将只有一个角色,并且我还创建了一个管理区域,我可以在其中附加或分离特定角色的权限。

超级管理员角色没有权限编号 83 来控制对 Compras 菜单的访问。因此,每个具有超级管理员角色的用户都不会在导航栏中看到 Compras 链接。

nav bar

问题是,当项目在本地部署时一切正常,但是当我将它放到生产环境中时,某些权限验证不起作用。

它仍然显示 Compras 的链接

nav bar (production)

这就是我在导航栏部分完成权限验证的方式:

@if(Auth::check() && Auth::user()->can('menu.compras'))
<li class="dropdown ">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Compras<span
                class="caret"></span></a>
    <ul class="dropdown-menu">
        <li class="grid-demo">
            <div class="yamm-content">
                <div class="row text-center">
                    <ul class="col-sm-6">
                        <li class="dropdown-header"><h4>Categorias</h4></li>
                        @if(Auth::check() && Auth::user()->can('menu.categorias'))
                            <li><a href="{!!URL::to('Categoria')!!}">Listado de Categorías</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        @if(Auth::check() && Auth::user()->can('crear.categoria'))
                            <li><a href="{!!URL::to('Categoria/create')!!}">Agregar
                                    categoría</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        <li role="separator" class="divider"></li>
                        <li class="dropdown-header"><h4>Bodegas</h4></li>
                        @if(Auth::check() && Auth::user()->can('menu.bodegas'))
                            <li><a href="{!!URL::to('Bodega')!!}">Listado de Bodegas</a></li>
                        @else
                            <li>------------</li>
                        @endif
                        @if(Auth::check() && Auth::user()->can('crear.bodega'))
                            <li><a href="{!!URL::to('Bodega/create')!!}">Agregar Bodega</a></li>
                        @else
                            <li>------------</li>
                        @endif
                        <li role="separator" class="divider"></li>
                        <li class="dropdown-header"><h4>Proveedores</h4></li>
                        @if(Auth::check() && Auth::user()->can('menu.proveedores'))
                            <li><a href="{!!URL::to('Proveedor')!!}">Listado de Proveedores</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        @if(Auth::check() && Auth::user()->can('crear.proveedor'))
                            <li><a href="{!!URL::to('Proveedor/create')!!}">Agregar
                                    Proveedor</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        <li role="separator" class="divider"></li>
                        <li class="dropdown-header"><h4>Productos</h4></li>
                        @if(Auth::check() && Auth::user()->can('menu.productos'))
                            <li><a href="{!!URL::to('Producto')!!}">Listado de Productos</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        @if(Auth::check() && Auth::user()->can('crear.producto'))
                            <li><a href="{!!URL::to('Producto/create')!!}">Agregar Producto</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        <li role="separator" class="divider"></li>
                    </ul>
                    <ul class="col-sm-6">
                        <li class="dropdown-header"><h4>Cotizaciones</h4></li>
                        @if(Auth::check() && Auth::user()->can('menu.cotizaciones'))
                            <li><a href="{!!URL::to('Cotizacion')!!}">Listado de
                                    Cotizaciones</a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        @if(Auth::check() && Auth::user()->can('crear.cotizacion'))
                            <li>
                                <a href="" data-toggle="modal"
                                   data-target="#CotizacionBodegaModal">
                                    Crear cotizacion
                                </a>
                            </li>
                        @else
                            <li>------------</li>
                        @endif
                        <li role="separator" class="divider"></li>
                        <li class="dropdown-header"><h4>Entradas</h4></li>
                        @if(Auth::check() && Auth::user()->can('menu.entradas'))
                            <li><a href="{!!URL::to('Entrada')!!}">Listado de Entradas</a></li>
                        @else
                            <li>------------</li>
                        @endif
                        @if(Auth::check() && Auth::user()->can('crear.entrada'))
                            <li><a href="{!!URL::to('Entrada/create')!!}">Hacer Entrada</a></li>
                        @else
                            <li>------------</li>
                        @endif
                        <li role="separator" class="divider"></li>
                    </ul>
                </div>
            </div>
        </li>
    </ul>
</li>
@endif

我也尝试过使用 te Bican 包刀片扩展:

@permission('menu.compras') //menu.compras is the premission slug 
.
.
.
@endpermission

但它也不起作用。

我找不到的是为什么某些权限验证有效而其他无效。

例如:角色列表菜单验证它正在工作:

在这种情况下,超级管理员用户看不到角色列表的链接,而是显示“-------”

有人可以帮我解决这个问题吗?

提前致谢。

Pd:我无法提交更多图片来展示,因为我是 stackoverflow 的新手。

【问题讨论】:

    标签: php laravel permissions blade roles


    【解决方案1】:

    我自己发现我错过了权限继承概念,基本上是具有较高级别角色的用户正在从较低级别的角色继承权限。

    因此,由于某些用户的级别高于其他用户,这就是为什么这些用户可以在没有所需权限的情况下访问这些链接。

    这是包文档的链接,其中包含有关权限继承的所有说明

    Permissions Inheriting

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      相关资源
      最近更新 更多