通过电子邮件/电话号码登录Laravel Auth()

时间:2016-11-22 12:37:02

标签: php laravel authentication

我正在使用

Route::auth();

用于在Laravel中登录用户。 有多个手机链接到用户并保存在表格中:手机。 表是 用户:id,电子邮件,密码 手机:id,user_id,phone_number

如何使用电子邮件/电话和密码进行用户登录

1 个答案:

答案 0 :(得分:0)

App\Traits\Auth中,创建名为LoginUser.php的文件。

<?php

namespace App\Traits\Auth;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

trait LoginUser
{

    /**
     * Handle a Authenticates the User.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function login(Request $request)
    {
        $this->validateLogin($request);

        if ($this->attemptLogin($request)) {
            return $this->successfulLogin($request);
        }
        return $this->failedLogin($request);
    }

    /**
     * Validate the user login request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    protected function validateLogin(Request $request)
    {
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required',
        ]);
    }
    /**
     * Attempt to log the user into the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return bool
     */
    protected function attemptLogin(Request $request)
    {   
        //Try with email AND username fields
        if (Auth::attempt([
            'phone' => $request['username'],
            'password' => $request['password']
            ],$request->has('remember'))
            || Auth::attempt([
            'email' => $request['username'],
            'password' => $request['password']
            ],$request->has('remember'))){
                return true;
        }
        return false;
    }

    /**
     * This is executed when the user successfully logs in
     * 
     * @var Request $request
     * @return Reponse
     */
    protected function successfulLogin(Request $request){
        return redirect($this->redirectTo);
    }

    /**
     * This is executed when the user fails to log in
     * 
     * @var Request $request
     * @return Reponse
     */
    protected function failedLogin(Request $request){
        return redirect()->back()->withErrors(['password' => 'You entered the wrong username or password']);
    }

}

然后在

App\Http\Controllers\Auth

重写(或创建)LoginController.php并粘贴此

<?php

namespace App\Http\Controllers\Auth;

use App\Traits\Auth\LoginUser;
use App\Http\Controllers\Controller;

class LoginController extends Controller
{
    use LoginUser;

    /**
     * Where to redirect users after registration.
     *
     * @var string | URL
     */
    protected $redirectTo = '/mPanel';

    /**
     * Displays login page
     * 
     * @return \Illuminate\Http\Response
     */
    public function show(){
        return response()->view('LOGIN PAGE HERE');
    }

}

最后在您的路线文件中,添加以下路线:

Route::get('login', 'Auth\LoginController@show');
Route::post('login', 'Auth\LoginController@login');