2017-02-07 9 views
1

基本的に私がしたいのは、special token auto loginlaravelイベントは、同期して実行されていますか?

ですが、それはページのサブセットのみです。トークンのログインについては、コメントはOKです。クレジットカード情報の変更や商品の購入は、トークンのログインでは正しくありません。

usersテーブルにブール値token_loginを保存します。各ログインで

iは真のトークンのログインが行われた場合

class EventServiceProvider extends ServiceProvider 
{ 

    protected $listen = [ 
     'Illuminate\Auth\Events\Login' => [PostLoginListener::class], 
    ]; 

が、私はこれをtrueに設定するイベントハンドラを使用してfalseにtoken_loginを設定します。

だから私は、イベントが呼び出されることを期待 - > token_login = falseを

は、コードは、実際の自動ログインの場合に真= token_login設定し、実行し続けます。

これは、イベントが実際に常に同期して、常に他のコードの前に発生することを必要とします。それは事実ですか?

+0

これを回答として見ることはできませんが、イベントは 'fireEvent'メソッドで発生します。 https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L1473 –

答えて

5

PostLoginListenerIlluminate\Contracts\Queue\ShouldQueueインターフェイスを実装していない限り、イベントは同期処理されます。

1

PHPは同期言語なので(HHVMまたはHackを使用していない場合)、イベントは常に同じ順序で発生します。だから、このイベントがもう一方のイベントの前に発生するかどうかをテストし、それからさらに進んでいくことができます。

編集: Laravelがイベントを発生させる方法は、主にServiceProvider配列がconfig/app.phpの内部に格納されている順序に基づいています。

関連する問題