流明认证
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
有什么想法吗?
编辑:
因为有人要求提供代码示例。
- 安装流明
- 取消注释 app.php
中的所有内容
把这个放在路由中:
$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
中的以下行来注册 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
)。我们关心的是前三个。
首先我们将默认的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) {
对我的应用有什么影响。
根本无法让 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
有什么想法吗?
编辑:
因为有人要求提供代码示例。
- 安装流明
- 取消注释 app.php 中的所有内容
把这个放在路由中:
$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
中的以下行来注册 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
)。我们关心的是前三个。
首先我们将默认的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) {
对我的应用有什么影响。