如何在带有防护装置的管腔中实现多重身份验证



我是管腔的新手。我在网上搜索了一下,没有找到合适的答案,所以我发布了这个问题。我已经实现了身份验证,它运行得非常好。现在的问题是,当我试图用auth-guard中间件实现多重身份验证时,我不知道如何实现它

到目前为止我所做的事情-

在bootstrap/app.php 中取消注释

$app->withFacades();
$app->withEloquent();
$app->routeMiddleware(['auth' => AppHttpMiddlewareAuthenticate::class,]);
$app->register(AppProvidersAppServiceProvider::class);
$app->register(AppProvidersAuthServiceProvider::class);
$app->register(AppProvidersEventServiceProvider::class);

为客户和管理员创建一个迁移、模型和登录/注册控制器。

创建config/auth.php

<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
*/
'defaults' => [
'guard' => env('AUTH_GUARD', 'customer'),
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
*/
'guards' => [
'customer' => [
'driver' => 'token',
'provider' => 'customers',
],
'admin' => [
'driver' => 'token',
'provider' => 'admins',
]
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
*/
'providers' => [
'customers' => [
'driver' => 'eloquent',
'model' => AppModelCustomerCustomer::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => AppModelAdminAdmin::class,
]
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
*/
'passwords' => [
//
],
];

我的身份验证服务提供商

public function boot()
{
$this->app['auth']->viaRequest('token', function ($request) {
if ($request->input('api_token')) {
return Customer::where('api_token', $request->input('api_token'))->first();
}
});
}

如果您注意到,它当前仅对Customer模型进行身份验证。不管我用什么防护。请让我知道如何使它充满活力。

**我没有使用JWT或任何其他驱动程序。

这可能很晚了,但我也遇到了类似的问题。我也尝试过使用auth-guard,但我无法使其工作,我使用了路由前缀。阅读文档后同样,您可以按照自己的意愿检索经过身份验证的用户。我试过这个

public function boot()
{
$this->app['auth']->viaRequest('token', function ($request) {

if ($request->input('api_token')) {
if ($request->is('c/*')) {
// Prefix for Customer endpoints
return Customer::where('api_token', $request->input('api_token'))->first();
} elseif ($request->is('admin/*')) {
// Prefix for Admin endpoints
return Admin::where('api_token', $request->input('api_token'))->first();
}
}
});
}

您也可以使用Gates/Policies

最新更新