仅在laravel中使用用户名认证用户

问题描述 投票:0回答:1

如果我只需要使用user_name对用户进行身份验证,因为我不需要电子邮件和密码列,该怎么办

我的目标是在他们输入用户名时对其进行身份验证

php laravel authentication eloquent laravel-5.8
1个回答
0
投票

嗯,也许您想编辑登录控制器并覆盖AuthenticatesUsers中的功能登录>

public function login(Request $request)
{   

    $user = User::where('username', $request->username)->first();
    if(Auth::login($user)){
        return $this->sendLoginResponse($request);
    }



    return $this->sendFailedLoginResponse($request);
}

LoginController应该看起来像这样

    class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function username()
    {
        return 'user_name';
    }

    public function login(Request $request)
    {   

        $user = User::where('user_name', $request->user_name)->first();
        if(Auth::login($user)){
            return $this->sendLoginResponse($request);
        }



        return $this->sendFailedLoginResponse($request);
    }




}

不要忘记导入某些类,例如Request,用户模型和Auth

我在laravel 6.2中进行了测试,不确定是否是最好的方法,但希望这可以帮助您并告诉我您是否找到了最好的方法,反而]

© www.soinside.com 2019 - 2024. All rights reserved.