流明认证

Rob*_*Rob 5 php laravel lumen lumen-5.2

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

我有一个全新的安装,并尝试按照这里的文档:

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

我已取消注释文件中的AuthProviderapp.php(以及其他所有内容,外观等).然后在一个简单的控制器中我就做了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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:

因为有人要求提供代码示例.

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

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

小智 7

这是我到目前为止所做的,这是有效但不完全是我喜欢它.以下适用于基于令牌的身份验证,这是Lumen中的默认设置.

启用身份验证

注册routeMiddlewareAuthServiceProvider取消注释以下行bootstrap/app.php.

$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);
Run Code Online (Sandbox Code Playgroud)

$app->register(App\Providers\AuthServiceProvider::class);
Run Code Online (Sandbox Code Playgroud)

组态

复制vendor/laravel/lumen-framework/config/auth.phpconfig/auth.php.config如果必须,创建根文件夹.

里面我们会发现四个项目(defaults,guards,providers,passwords).我们关注前三个问题.

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

'defaults' => [
    'guard' => env('AUTH_GUARD', 'ABC'),
],
Run Code Online (Sandbox Code Playgroud)

接下来我们定义ABC后卫token作为其驱动程序,并XYZ作为其供应商.

'guards' => [
    'ABC' => [
        'driver' => 'token', 
        'provider' => 'XYZ'
    ],
],
Run Code Online (Sandbox Code Playgroud)

和XYZ提供商与定义eloquent驾驶员App\User::class作为模型.

'providers' => [
    'XYZ' => [
        'driver' => 'eloquent',
        'model'  => App\User::class,
    ],
],
Run Code Online (Sandbox Code Playgroud)

完成安装

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

$app->group(['middleware' => 'auth'], function () use ($app) {
Run Code Online (Sandbox Code Playgroud)

所以这就是让令牌认证正常运行的原因.它使用api_tokenusers表中的字段进行身份验证,可以在其中找到TokenGuard.

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


Rob*_*Rob 2

好吧,我仍然没有找到如何通过更改 api 请求类型.env。但目前看来,将其切换为token有效。

变成。Auth::viaRequest('api', functiAuth::viaRequest('token', funct