根本无法让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
有什么想法吗?
编辑:
因为有人要求代码示例。
- 安装流明
- 取消注释应用程序中的所有内容.php
把它放在路线中:
$app->get('/api/v1/users/{id}', function () { dd(''Auth::user());});
这就是我到目前为止所拥有的,它正在工作,但不是我想要的。以下内容适用于基于令牌的身份验证,这是 Lumen 中的默认设置。
启用身份验证
通过取消注释bootstrap/app.php
中的以下行来注册routeMiddleware
和AuthServiceProvider
。
$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
文件夹。
在里面,我们将找到四个项目(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_token
字段进行身份验证,可以在TokenGuard
中找到。
我还没有发现AuthServiceProvider
和$this->app['auth']->viaRequest('api', function ($request) {
对我的应用程序有什么影响。
我仍然没有找到如何通过.env
更改api请求类型。但就目前而言,将其切换到token
似乎有效。
将Auth::viaRequest('api', functi
更改为Auth::viaRequest('token', funct
。