2017-05-18 11 views
0

初めて快適なバックエンドサービスを作成するためにルーメンを使用しようとしています。ルーメン - 非トークンベースの認証?

私はlaravelで作業するのに慣れていましたが、内腔ではすでにautenticationに固執しています。私はこれに関するチュートリアルを見つけることができません。

自分のロジックが安全かどうかはわかりません。基本的に私は電子メールとパスワードを含む投稿要求を受け取り、詳細が正しいかどうかを確認してユーザーを認証したいと考えています。

私は何かが欠けてるように、これは標準付属していますか私はあなたがリンクされドキュメント内にあるように見え認証サービス

+0

ルーメンでは、認証はトークンで(一般的に)処理されます。したがって、あなたのケースでは、トークンを取得するために認証サービスに投稿要求を行う必要があります。その後、それぞれの要求には、要求を認証する同じトークンが送信されます。しかし、私が知る限り、これはどれも箱の外にルーメンに組み込まれていません。これは実際に私が極端に薄いものを必要としない限り、APIのために完全なLaravelフレームワークを使用する理由です。 – Samsquanch

答えて

0

を書き換える必要があります。lumes何かあると感じ

$this->app['auth']->viaRequest('api', function ($request) { 
    // Return User or null... 
}); 

Requestクラスは、この関数に渡されます。 $request->get('email')request->get('password')の中から電子メールとパスワードを取得する必要があります。有効であることを確認してください。

私は

$this->app['auth']->viaRequest('api', function ($request) { 

    $email = $request->get('email'); 
    $password = $request->get('password'); 
    $user = \DB::table('users')->where('email', $email)->first(); 

    // Invalid Email 
    if ($user === null) { 
     return null; 
    } 

    // Check if password matches 
    if (\Hash::check($user->password, $password)) { 
     return $user; 
    } 

    // Invalid password 
    return null; 
}); 

に注意してください...あなただけの、次のような何かを行うことができ、内腔とか、どのくらいであることを容易にするので、利用できる、これを行うための最善の方法のわからないんだけどルーメンは、リクエストごとに電子メールとパスワードを渡す必要があるセッション状態をサポートしていません。しかし、セットアップが完了したら、Lumenで行う必要があるのは、ユーザをつかむためにAuth::user()です。

また、JSON Webトークンを使用するjwt-authを使用することもできます。このトークンを使用すると、メールやパスワードを簡単に渡すことができます。この問題に遭遇した人のため

https://github.com/tymondesigns/jwt-auth

0

。これは私がそれを解決した方法です。

auth serviceProvider(bootメソッド)では、承認ヘッダーが存在するかどうかを確認します。存在する場合は、apiToken、魔法使いが含まれている必要があります。魔法使いはあなたが検証して通常の流れを続けることができます。

承認ヘッダーが存在しない場合は、電子メールとパスワードの要求変数を確認できます。ログインを検証し、成功すると新しいapiTokenを保存します。このトークンをフロントエンドに返し、このトークンをヘッダーに含めるために、すべてのAjax要求を処理する機能を作成しました。また、私のフロントエンドアプリケーションの魔女のすべての応答を処理する関数を実装して、ログインページにリダイレクトするときに401をチェックします。

このaproachでは、authメソッドとauth :: user()の両方をアプリケーションで使用できます。ログインページがAuthミドルウェアで処理されていないことを確認してください!

関連する問題