6

Lumen認証をまったく機能させることができません。

私は新規インストールを行っており、ここのドキュメントに従おうとしています:

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 のデフォルト設定であるトークンベースの認証で機能します。

認証を有効にする

の次の行のコメントを外して、 を登録routeMiddlewareします。AuthServiceProviderbootstrap/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フォルダーを作成します。

内部には 4 つの項目 ( defaultsguardsproviderspasswords) があります。最初の3つが気になります。

まず、デフォルトガードに ABC という名前を付けます。

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

次に、 ABC ガードをdriverおよびprovidertokenとして定義します。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にある users テーブルのフィールドを使用して認証しTokenGuardます。

私はまだ自分のアプリにどのような影響AuthServiceProviderを与え、持っているのかまだわかっていません。$this->app['auth']->viaRequest('api', function ($request) {

于 2016-06-15T09:56:56.037 に答える