首頁  >  文章  >  後端開發  >  Laravel 5 以使用者名稱或信箱登錄,登入錯誤多次顯示驗證碼怎麼做?

Laravel 5 以使用者名稱或信箱登錄,登入錯誤多次顯示驗證碼怎麼做?

WBOY
WBOY原創
2016-08-04 09:20:031990瀏覽

Laravel的Auth預設是以信箱來登入的,要怎麼改成使用者名稱OR信箱登入?
多次登入錯誤顯示驗證碼又怎麼實作? (這是YII2的方式)
登入時能以使用者名稱或信箱登錄,當使用者名稱/信箱或密碼錯誤3次之後要求輸入驗證碼,怎麼實作?

回覆內容:

Laravel的Auth預設是以信箱來登入的,要怎麼改成使用者名稱OR信箱登入?
多次登入錯誤顯示驗證碼又怎麼實作? (這是YII2的方式)
登入時能以使用者名稱或信箱登錄,當使用者名稱/信箱或密碼錯誤3次之後要求輸入驗證碼,怎麼實作?

重寫postLogin登入函數:

<code>/**
 * Handle a login request to the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function postLogin(Request $request)
{
    //获取表单的值
    $username = $request->input('username');
    $password = $request->input('password');
    $remeber = $request->input('remember');
    //判断是邮箱还是用户名登录
    $type = filter_var($username, FILTER_VALIDATE_EMAIL ) ? 'email' : 'username';

    //登录表单验证
    $validator = Validator::make($request->all(), [
        'username' => 'bail|required|min:5|max:30',
        'password' => 'bail|required|min:8|max:50',
    ]);

    //表单验证失败提示
    if ($validator->fails()) {
        $errors = $validator->errors()->all();
        if (count($errors) > 0) {
            Flash::error(implode('<br>', $errors));
        }
        return redirect('/login')
                    ->withInput();
    }

    //登录验证
    if ($type == 'email') {
        if (Auth::attempt(['email' => $username, 'password' => $password], $request->has('remember'))) {
            Flash('登录成功');
            return redirect()->intended($this->redirectPath());
        }
    } else if (Auth::attempt(['username' => $username, 'password' => $password], $request->has('remember'))) {
        Flash('登录成功');
        return redirect()->intended($this->redirectPath());
    } else {
        Flash(Lang::get('auth.failed'), 'error');
        return redirect('/login')
                    ->withInput();
    }
}</code>

問題未完全解決,所以先掛著。

客戶端登陸之後 點擊次數參數 提交到伺服器,不成功並且回應帶下次登錄次數的值給客服端,服務端記錄session。以此類推達到3次 客服端直接非同步請求 拉取驗證碼,之後再填寫登陸 。帶上登陸次數參數 , 伺服器進行判斷次數,若沒有達到3次 不需要進行驗證碼判斷 反之。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn