Heim  >  Artikel  >  Backend-Entwicklung  >  Laravel 5 以用户名或邮箱登录,登录错误多次显示验证码怎么做?

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

WBOY
WBOYOriginal
2016-08-04 09:20:031955Durchsuche

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次 不需要进行验证码判断 反之。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn