当前位置:Gxlcms > PHP教程 > Laravel5以用户名或邮箱登录,登录错误多次显示验证码怎么做?

Laravel5以用户名或邮箱登录,登录错误多次显示验证码怎么做?

时间:2021-07-01 10:21:17 帮助过:5人阅读

Laravel的Auth默认是以邮箱来登录的,怎样改成用户名OR邮箱登录?
多次登录错误显示验证码又怎样实现?(这是YII2的方式)
登录时能以用户名或邮箱登录,当用户名/邮箱或密码错误3次之后要求输入验证码,怎么实现?

回复内容:

Laravel的Auth默认是以邮箱来登录的,怎样改成用户名OR邮箱登录?
多次登录错误显示验证码又怎样实现?(这是YII2的方式)
登录时能以用户名或邮箱登录,当用户名/邮箱或密码错误3次之后要求输入验证码,怎么实现?

重写postLogin登录函数:

/**
 * 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('
', $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(); } }

问题未完全解决,所以先挂着。

客户端登陆之后 点击次数参数 提交到服务器,不成功并且响应带下次登入次数的值给客服端,服务端记录session。以此类推达到3次 客服端直接异步请求 拉取验证码,之后再填写登陆 。带上登陆次数参数 , 服务器进行判断次数,如果没有达到3次 不需要进行验证码判断 反之。

人气教程排行