视图中的 Laravel Multi-Auth @auth 语法

Posted

技术标签:

【中文标题】视图中的 Laravel Multi-Auth @auth 语法【英文标题】:Laravel Multi-Auth @auth syntax in views 【发布时间】:2018-03-26 18:13:56 【问题描述】:

我在 Laravel 5.5 中有一个多身份验证系统设置(使用自定义版本的 Hesto 包),除了这个细节之外,一切都按我喜欢的方式工作。在“welcome.php”登录页面上,导航栏应显示不同的链接,分别对应登录状态和授权用户类型。

情况1: -用户未登录,应该看到两个身份验证链接: 1) 用户登录 2) 客户端登录 案例2: -用户以“用户”身份登录,并且应该只看到他们仪表板的链接('/user/dashboard') 案例3: - 用户以“客户”身份登录,并且应该只看到他们各自仪表板的链接('/client/dashboard')

我认为下面的语法是正确的,但在 @else 语句之后我遇到了问题。案例 1 根本没有显示链接,也没有错误响应。

@if (Route::has('login'))
    // Check 'user' guard
    @auth('user')
        <a class="nav-item nav-link theme-faded-bg-light" href=" url('/user/dashboard') ">Dashboard</a>
    @endauth
    // Check 'client' guard
    @auth('client')
        <a class="nav-item nav-link theme-faded-bg-light" href=" url('/client/dashboard') ">Dashboard</a>
    @endauth
@else
    <a class="nav-item nav-link theme-faded-bg-light" href=" route('user-login') ">Firm Login</a>
    <a class="nav-item nav-link theme-faded-bg-light" href=" route('client-login') ">Client Login</a>
@endif

我已经尝试了上述代码的几个重新组织/重新制定的版本,但均无济于事。大多数抛出语法错误。如有必要,我可以举出例子。我知道我遗漏了一些非常简单的东西,但是现在我已经把头撞在墙上太多次了,我没有希望自己找到它。

提前非常感谢。如果您需要我的代码的任何其他部分,请告诉我。

配置/auth.php

'默认值' => [ '守卫' => '网络', '密码' => '用户', ], // 守卫 '守卫' => [ '客户' => [ '司机' => '会话', '供应商' => '客户', ], '用户' => [ '司机' => '会话', '提供者' => '用户', ], '管理员' => [ '司机' => '会话', '提供者' => '管理员', ], '网络' => [ '司机' => '会话', '提供者' => '用户', ], 'api' => [ '司机' => '令牌', '提供者' => '用户', ], ], // 提供者 '供应商' => [ '客户' => [ '司机' => '雄辩的', '模型' => App\Client::class, ], '管理员' => [ '司机' => '雄辩的', '模型' => App\Admin::class, ], '用户' => [ '司机' => '雄辩的', '模型' => App\User::class, ], ],

debug toolbar screenshot

【问题讨论】:

请告诉我们当前运行当前版本代码的错误! 所以您看不到任何链接 - 对吧?您可以添加保护代码以查看是否有问题吗?你是否使用 laravel-debug-toolbar 并且可以截屏“auth”-tab? 正确,没有链接。我不使用 laravel-debug-toolbar,但我会安装它,看看它是否能帮助我解决它。稍后我会在我的问题中添加保护代码。 我已经提供了我的 config/auth.php 文件。如果还有其他有用的文件,请注明,我也会添加。 【参考方案1】:

今天下午坐下来开始工作,并检查了相关的外墙。我认为这是我的语法中的一个简单错误是正确的。从那以后就一直在踢自己。

万一它对其他人有用......

我有多个激活的警卫来启用我的应用所需的“用户”、“客户端”和“管理员”模型。在这种情况下,我需要调用 auth 门面的 guard 方法,然后分别调用 ->check() 。见下文:

@if(Auth::guard('user')->check())
    <a class="nav-item nav-link theme-faded-bg-light" href=" route('user.dashboard') ">Dashboard</a>
@elseif(Auth::guard('client')->check())
    <a class="nav-item nav-link theme-faded-bg-light" href=" route('client.dash') ">Dashboard</a>
@else
    <a class="nav-item nav-link theme-faded-bg-light" href="/user/login">Firm Login</a>
    <a class="nav-item nav-link theme-faded-bg-light" href=" route('client-login') ">Client Login</a>
@endif

【讨论】:

以上是关于视图中的 Laravel Multi-Auth @auth 语法的主要内容,如果未能解决你的问题,请参考以下文章

来自同一登录的Laravel Multi-auth(多个用户表)

来自同一登录名的 Laravel Multi-auth(多个用户表)

Laravel 5.3:布局视图中的路由

Laravel 5 中的自定义分页视图

子视图刀片中的 Laravel 表单无法发布上传

如何从 Laravel 中的迁移中生成视图?