Multi auth use one page login laravel

落爺英雄遲暮 提交于 2019-12-10 23:28:51

问题


I'm new in laravel, but i'm curious about multi auth laravel. I want to make some website which has two rules, customer and seller. But, i want they login use same login form. I try to use php artisan make:auth, but i don't understand how to use it in one controller use LoginController.php , From what i seen from many tutorials, it separated with different login form and controller. Like Customer login form and seller login form. Is it possible to make multi auth using one login form and one login controller only?

Thank you


回答1:


I think you can overwrite attemptLogin() method in your LoginController like this:

protected function attemptLogin(Request $request)
{
    $customerAttempt = Auth::guard('customer')->attempt(
        $this->credentials($request), $request->has('remember')
    );
    if(!$customerAttempt){
        return Auth::guard('seller')->attempt(
            $this->credentials($request), $request->has('remember')
        );
    }
    return $customerAttempt;
}



回答2:


public function login(Request $request)
{
    // Validate the form data
    $validator = $this->validate($request, [
    'email'   => 'required|email',
    'password' => 'required|string'
  ]);

    // Attempt to log the customer in
    if (Auth::guard('customer')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
        // if successful, then redirect to their intended location
        return redirect()->intended(route('Put_your_URL'));
    } //attempt to log the seller in
    else if (Auth::guard('seller')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
        // if successful, then redirect to their intended location
        return redirect()->intended(route('Put_your_URL'));
    }

    // if Auth::attempt fails (wrong credentials) create a new message bag instance.
    $errors = new MessageBag(['password' => ['Adresse email et/ou mot de passe incorrect.']]);
    // redirect back to the login page, using ->withErrors($errors) you send the error created above
    return redirect()->back()->withErrors($errors)->withInput($request->only('email', 'password'));
}


来源:https://stackoverflow.com/questions/50514738/multi-auth-use-one-page-login-laravel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!