2017-04-02 7 views
1

ユーザーがLaravelアプリケーションにログインしようとしたときにパスワードがデータベースの「パスワード」列と一致しない場合は、別のパスワード列(「old_system_password」) )あまりにも。Laravelによるカスタムログインパスワードチェック5.4

私はデフォルトのLaravel認証システムを使用しています。私が理解する限り、新しい「AuthController」を作成し、組み込みの認証方法を上書きできるはずです。しかし、私はベンダーのフォルダでパスワードマッチングを扱う方法は見つけられませんし、Laravelにデフォルトの代わりに自分のメソッドを使用するように指示する方法もわかりません。

私はこれをウェブで検索しましたが、私が見つけた解決策は古いバージョンのLaravelだけにあるようです。

アイデア?

答えて

-1

最初のソリューションは:https://laravel.com/docs/5.4/authentication#authenticating-users

第二の溶液:

1:ちょうどLoginController.php

public function authenticate() 
{ 
    if (Auth::attempt(['email' => $email, 'password' => $password])) { 
     // Authentication passed... 
     return redirect()->intended('dashboard'); 
    } else if(Auth::attempt(['email' => $email, 'password' => $old_password]) { 
     return redirect()->intended('dashboard'); 
    } 
} 

チェックでpublic function authenticate()を上書きlaravelイベントを生成するためにphp artisan event:generateを実行します。

2:php artisan make:event CheckOldPassword

3を実行します。EventServiceProvider.php 'Illuminate\Auth\Events\Failed' => ['App\Listeners\CheckOldPassword'],

4でのイベントを追加します:手動でイベントにログインをチェック:機能public function handle(Failed $event){}

5を作成します。

0

おそらくデフォルトでは、このように見ている認証のミドルウェアを使用してみてください:

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class RedirectIfAuthenticated 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string|null $guard 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 
      return redirect('/home'); 
     } 

     return $next($request); 
    } 
} 

は、ユーザーがパスワードを取り、あなたのデータベースにチェックする関数を呼び出していないならば、認証されているかどうかを確認してください。