【问题标题】:Laravel @guest can't identify one of custom guardsLaravel @guest 无法识别自定义守卫之一
【发布时间】:2019-07-20 23:17:03
【问题描述】:

Laravel (5.8) @guest 无法识别自定义守卫之一。我有 2 个自定义守卫:

'guards' => [
        'suppliers' => [
            'driver'  => 'session',
            'provider' => 'suppliers',
        ],

        'admins' => [
            'driver'  => 'session',
            'provider' => 'admins',
        ],
],

'providers' => [
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'suppliers' => [
            'driver' => 'eloquent',
            'model' => App\Supplier::class,
        ],
],

登录路径为:

// Admin Auth routes
Route::get('/admin/login', 'Auth\LoginController@showLoginForm')->name('admin.login');
Route::post('/admin/login', 'Auth\LoginController@login')->name('admin.login.post');
Route::post('/admin/logout', 'Auth\LoginController@logout')->name('admin.logout');

// Suppliers Auth routes
Route::get('/login', 'AuthSuppliers\LoginController@showLoginForm')->name('login');
Route::post('/login', 'AuthSuppliers\LoginController@login')->name('login.post');
Route::post('/logout', 'AuthSuppliers\LoginController@logout')->name('logout');

Everythink 与 suppliers 一起工作正常,但 admins 无法识别为使用刀片 @guest 指令登录,但 Auth::guard('admins')->check() 返回 true。

任务更像是:如何使用带有多个守卫的刀片。例如,如果我不知道哪个守卫准确登录,如何打印用户名?

【问题讨论】:

  • Auth::user() 总是提供登录用户信息。你可以试试

标签: laravel


【解决方案1】:

来自 laravel 文档:

如果需要,您可以指定应检查的身份验证保护 使用 @auth 和 @guest 指令时:

@auth('admin')
     // The user is authenticated...
@endauth

@guest('admin')
    // The user is not authenticated...
@endguest

所以你可以给@auth@guest一个参数,这个参数是用于检查的身份验证保护

【讨论】:

  • 好的,@guest('suppliers') 呢?如果您以管理员身份登录,它将输出内容,这将不起作用,我为这个任务做了助手,看不到其他方式。
  • 您可以使用多个嵌套访客:@guest('suppliers) @guest('admins) ... @endguest @endguest
猜你喜欢
  • 1970-01-01
  • 2018-03-11
  • 2021-05-01
  • 2019-03-04
  • 2019-09-30
  • 2019-08-27
  • 2016-01-30
  • 2012-08-04
  • 1970-01-01
相关资源
最近更新 更多