6

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

我有一个全新的安装并尝试在此处遵循文档:

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

我已取消注释文件AuthProvider中的行app.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

有任何想法吗?

编辑:

由于有人要求提供代码示例。

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

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

4

2 回答 2

8

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

启用身份验证

注册routeMiddlewareAuthServiceProvider取消注释bootstrap/app.php.

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

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

配置

复制vendor/laravel/lumen-framework/config/auth.phpconfig/auth.php. config如果需要,请创建根文件夹。

在里面我们会找到四个项目(defaults, guards, providers, passwords)。我们关心前三个。

首先,我们将默认守卫命名为 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_tokenusers 表中的字段进行身份验证,可以在TokenGuard.

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

于 2016-06-15T09:56:56.037 回答
2

好吧,我还没有找到如何通过.env. 但是现在将其切换为token似乎可行。

改为。Auth::viaRequest('api', functi_Auth::viaRequest('token', funct

于 2016-03-01T11:38:11.650 回答