流明认证

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. 取消注释 app.php
  3. 中的所有内容
  4. 把这个放在路由中:

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

嗯,我还没有找到如何通过 .env 更改 api 请求类型。但现在将其切换到 token 似乎可行。

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

这就是我目前所得到的,它正在工作,但不是我想要的那样。以下适用于基于令牌的身份验证,这是 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)。我们关心的是前三个。

首先我们将默认的guard命名为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) {

所以这就是获得令牌授权和 运行 的原因。它使用用户 table 中的 api_token 字段进行身份验证,可以在 TokenGuard 中找到。

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