laravel 流明认证

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/35667780/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 13:18:54  来源:igfitidea点击:

Lumen Authentication

phplaravellumenlumen-5.2

提问by Rob

Just can't get the Lumen authentication to work at all.

根本无法让 Lumen 身份验证正常工作。

I have a fresh install and trying to follow the docs here:

我进行了全新安装并尝试按照此处的文档进行操作:

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

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

I've Uncommented the AuthProviderline in the app.phpfile (along with everything else, facade, etc). Then in a simple controller I just do dd(Auth::use()).

我已取消注释文件中的AuthProviderapp.php(以及其他所有内容、外观等)。然后在一个简单的控制器中,我只做dd(Auth::use()).

I just can't get around this error:

我就是无法解决这个错误:

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

Any ideas?

有任何想法吗?

EDIT:

编辑:

Since someone asked for a code sample.

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

  1. Install Lumen
  2. Uncomment everything in app.php
  3. Put this in routes:

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

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

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

采纳答案by Rob

Well I still haven't found out how to change the api request type via .env. But for now switching it to tokenseems to work.

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

Changed Auth::viaRequest('api', functito Auth::viaRequest('token', funct.

Auth::viaRequest('api', functiAuth::viaRequest('token', funct

回答by Shaji Ahmed

This is what I've got so far, which is working but not quite how I'd like it. The following works for Token-based auth, which is the default setting in Lumen.

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

Enable Authentication

启用身份验证

Register routeMiddlewareand AuthServiceProviderby un-commenting the following lines in bootstrap/app.php.

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

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

and

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

Configuration

配置

Copy vendor/laravel/lumen-framework/config/auth.phpto config/auth.php. Create the root configfolder if you have to.

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

Inside we will find four items (defaults, guards, providers, passwords). We're concerned with the first three.

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

First we name the default guardas ABC.

首先,我们将默认守卫命名为 ABC。

'defaults' => [
    'guard' => env('AUTH_GUARD', 'ABC'),
],

Next we define the ABC guard with tokenas its driverand XYZas its provider.

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

'guards' => [
    'ABC' => [
        'driver' => 'token', 
        'provider' => 'XYZ'
    ],
],

And the XYZ provider is defined with eloquentas the driverand App\User::classas the model.

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

'providers' => [
    'XYZ' => [
        'driver' => 'eloquent',
        'model'  => App\User::class,
    ],
],

Completing Setup

完成设置

Finally, we use the authmiddleware in our routing setup, as usual.

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

$app->group(['middleware' => 'auth'], function () use ($app) {


So this is what gets the token auth up and running. It uses the api_tokenfield in the users table to authenticate, which can be found in TokenGuard.

所以这就是启动和运行令牌身份验证的原因。它使用api_token用户表中的字段进行身份验证,可以在TokenGuard.

I still haven't found out what effect AuthServiceProviderand $this->app['auth']->viaRequest('api', function ($request) {have on my app yet.

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