Laravel授权可以来宾

时间:2019-02-19 05:02:16

标签: laravel

我正在尝试授权来宾显示登录表单(如果未登录)。

@can('guest')
    <a href="/login">Let's Start</a>
@endcan 

我需要在哪里定义访客

2 个答案:

答案 0 :(得分:3)

默认情况下,Blade模板引擎提供所谓的authentication directives,它确定是否对用户进行了身份验证:

@auth
    // User is authenticated.
@endauth

@guest
    // User is not authenticated.
@endguest

答案 1 :(得分:1)

prd的答案是一种非常好的方法,并且可以在较新的laravel版本中使用。 (可能从5.5开始)

但是,如果您仍然想使用can('guest')格式,则可以这样做。

您需要将自定义的Blade指令放在AppServiceProvider.php文件中,并放在boot方法中。

Blade::if('can', function ($role) {
            if($role=='guest'){
                 return !(auth()->check());
            }
            // you can also put codes for can('admin') etc 
            // the return value should be true or false.
        });

有关更多信息,您可以阅读this