2017-12-12 15 views
1

php artisan make:authなどを使用してLaravel 5.5で認証を設定しましたが、問題があります。LaravelのDBにユーザーのログイン情報を保存

私はuser_actionsという名前のDBテーブルを持っています。私は、ユーザーが自分のアプリケーションで行ったこと(開いたページ、検索で使用したフィルタなど)を保存しています。私はこのテーブルにログインを追加したいのですが、私の人生のためにはどうしたらいいか分かりません。

LoginControllerには、コンストラクタとredirectTo変数のみが含まれています。 use AuthenticatesUsersがありますが、AuthenticatesUsersのプロジェクトを検索しても、ログインコントローラファイルの2つの記述を除いて結果は出ません。

AuthServiceProviderには、ポリシーを登録するためのブート方法があります。

Registerコントローラには、ユーザのデータベースエントリを作成する方法がありますが、には何が起こっているのかわかりません。

これで、ログインアクションをデータベースに保存するための呼び出しはどこに追加できますか?私はイベントを聞く必要がありますか?

+0

をそれを見つけることができますので、あなただけのアクションまたは彼らはログイン後に行うすべてのアクションをログイン追跡し、保存したいですか? –

+0

私は既にユーザーが行っている操作を追跡していますが、その一覧にログインを追加したいだけです。 – jovan

+0

あなたは認証コントローラを試しましたか? – madalinivascu

答えて

1

はログインコントローラに認証方式を追加し、この方法は、右の認証プロセス

use Illuminate\Contracts\Auth\Authenticatable; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 


class LoginController extends Controller 
{ 
    use AuthenticatesUsers; 

    /** 
     * @param Request $request 
     * @param Authenticatable $user 
     * @return \Illuminate\Http\RedirectResponse 
    */ 
    protected function authenticated(Request $request, Authenticatable $user) 
    { 
     /* Your db inserts */ 
     return redirect()->intended($this->redirectTo); 
    } 
} 

後に呼び出されるあなたもログイン試行および/またはログイン失敗をキャッチしたい場合は、ログイン機能を無効にすることができ、ログインに成功した後にのみ呼び出される認証されたので

+0

これはエラーを引き起こします: 'タイプエラー:引数2は、App \ Http \ Controllers \ Auth \ LoginController :: authenticated()はApp \ Http \ Controllers \ Auth \ Authenticatableのインスタンスでなければなりません。 /path/to/project/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticateUsers.php on line 104' – jovan

+0

私の回答を更新しました@jovanは、 'use AuthenticatesUsers; 'を持っていなかったようですあなたのログインクラスは – Insax

+0

でしたが、私は 'Illuminate \ Contracts \ Auth \ Authenticatableを使用していませんでした。 ' – jovan

1

デフォルトのログイン機能

use AuthenticatesAndRegistersUsers { 
     login as protected userLogin; 
    } 
    public function login(Request $request) { 
    //you db logic 
    return $this->userLogin(); 
    } 

にすべてのログインを無効にすることができますロジックあなたはvendor\laravel\framework\src\Illuminate\Foundation\Auth

か悲しい使用などでevent listener

<?php 

namespace App\Listeners; 

class UserEventSubscriber 
{ 
    /** 
    * Handle user login events. 
    */ 
    public function onUserLogin($event) { 
     //log data in db 
    } 

    /** 
    * Handle user logout events. 
    */ 
    public function onUserLogout($event) { 
     //log data in db 
    } 

    /** 
    * Register the listeners for the subscriber. 
    * 
    * @param Illuminate\Events\Dispatcher $events 
    */ 
    public function subscribe($events) 
    { 
     $events->listen(
      'Illuminate\Auth\Events\Login', 
      'App\Listeners\[email protected]' 
     ); 

     $events->listen(
      'Illuminate\Auth\Events\Logout', 
      'App\Listeners\[email protected]' 
     ); 
    } 

} 
関連する問題