流明认证


Lumen Authentication

根本无法让Lumen身份验证工作。

我有一个全新安装并尝试按照这里的文档进行操作:

https://lumen.laravel.com/docs/5.2/authentication

我已经取消注释了app.php文件中的AuthProvider行(以及其他所有内容,外观等)。然后在一个简单的控制器中,我只是做dd(Auth::use()).

我只是无法绕过这个错误:

Undefined index: provider
in AuthManager.php line 152
at Application->Laravel'Lumen'Concerns'{closure}('8', 'Undefined index: provider', '/home/vagrant/Code/gryd/api.gryd.com/vendor/illuminate/auth/AuthManager.php', '152', array('name' => 'api', 'config' => array('driver' => 'token'))) in AuthManager.php line 152

有什么想法吗?

编辑:

因为有人要求代码示例。

  1. 安装流明
  2. 取消注释应用程序中的所有内容.php
  3. 把它放在路线中:

    $app->get('/api/v1/users/{id}', function () { dd(''Auth::user());});

这就是我到目前为止所拥有的,它正在工作,但不是我想要的。以下内容适用于基于令牌的身份验证,这是 Lumen 中的默认设置。

启用身份验证

通过取消注释bootstrap/app.php中的以下行来注册routeMiddlewareAuthServiceProvider

$app->routeMiddleware([
    'auth' => App'Http'Middleware'Authenticate::class,
]);

$app->register(App'Providers'AuthServiceProvider::class);

配置

vendor/laravel/lumen-framework/config/auth.php复制到config/auth.php 。如有必要,请创建根config文件夹。

在里面,我们将找到四个项目(defaultsguardsproviderspasswords)。我们关注的是前三个。

首先,我们将默认防护命名为 ABC。

'defaults' => [
    'guard' => env('AUTH_GUARD', 'ABC'),
],

接下来,我们定义 ABC 防护,其中 token 作为其驱动程序XYZ 作为其提供者

'guards' => [
    'ABC' => [
        'driver' => 'token', 
        'provider' => 'XYZ'
    ],
],

XYZ 提供程序的定义是将eloquent作为驱动程序App'User::class作为模型

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

完成设置

最后,我们像往常一样在路由设置中使用auth中间件。

$app->group(['middleware' => 'auth'], function () use ($app) {

因此,这就是启动并运行令牌身份验证的原因。它使用用户表中的api_token字段进行身份验证,可以在TokenGuard中找到。

我还没有发现AuthServiceProvider$this->app['auth']->viaRequest('api', function ($request) {对我的应用程序有什么影响。

好吧,

我仍然没有找到如何通过.env更改api请求类型。但就目前而言,将其切换到token似乎有效。

Auth::viaRequest('api', functi更改为Auth::viaRequest('token', funct