1

ユーザーが自分のプラットフォームにログインできるようにする前に、ユーザーの電子メール アドレスを確認する機能を実装する必要があります。

登録時に確認コードの送信を正常に実装し、文字列「confirmation_code」と、ユーザーが確認されたかどうかのブール値「confirmed」をデータベースに保存しました。

検証自体もすでに実装されています。

現在、私が抱えている唯一の問題は、ユーザーが確認されているかどうかをログイン時に確認することです。Laravel 5.3 の API を読み込んだのですが、ログイン プロセスを好きなように編集する方法がわかりませんでした。laravel の元の機能をあまり変更するのは好きではありません。ログイン中の認証プロセスに単純なパラメーターを追加したいだけです。そんなに難しいことはありませんか?

4

3 に答える 3

1

さて、私は私の問題の解決策を見つけました。

個人的な設定で、attemptLogin(Request $request) 関数をオーバーライドしました。何を探す必要があるかを知っていれば、大したことではありません。認証自体がまったく機能しないため、laravelドキュメントで何らかの形で明確にする必要があると思います。

ただし、誰かが興味を持っている場合は、ここに私のコードがあります:

protected function attemptLogin(Request $request){
    return $this->guard()->attempt([
        'email' => $request->email,
        'password' => $request->password,
        'confirmed' => 1
    ], $request->has('remember'));
}

上記のコードは、LoginController.php ファイルに記述されています。

私が今見つけなければならない唯一のことは、ログインが失敗した理由を検出する方法です。これにより、ユーザーの電子メールとパスワードの組み合わせが間違っているか、アカウントがまだアクティブ化されていないかをユーザーに伝えることができます.

助けてくれてありがとう!

于 2016-12-02T15:41:17.450 に答える
-1

デフォルトの LoginController を使用していると仮定して、コントローラーの認証メソッドをオーバーライドします

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

これをコントローラーに追加します

于 2016-12-02T12:21:52.650 に答える