如何使用Laravel护照使用电话或电子邮件登录?

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

我需要通过email or phone登录的想法是我在模型用户中使用了此方法:

public function findForPassport($identifier)
{
    return $this->where('email', $identifier)->orWhere('phone', $identifier)->first();
}

但是当我登录时显示错误!

我的控制器代码:

public function login(Request $request)
{

    $request->validate([
        'email' => 'required|string|email',
        'password' => 'required|string',
        'remember_me' => 'boolean'
    ]);

    $credentials = request(['email', 'password']);
    if(!Auth::attempt($credentials))
        return response()->json([
            'message' => 'Unauthorized'
        ], 401);

    $user = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    if ($request->remember_me)
        $token->expires_at = Carbon::now()->addWeeks(1);
    $token->save();
    return response()->json([
        'access_token' => $tokenResult->accessToken,
        'token_type' => 'Bearer',
        'expires_at' => Carbon::parse(
            $tokenResult->token->expires_at
        )->toDateTimeString()
    ]);
}

我知道$credentials中有问题,但无论是电子邮件还是电话号码,都不知道如何解决

任何帮助吗?

laravel laravel-passport
1个回答
0
投票

这是我的使用方式

 /**
 * Login user and create token
 *
 * @param  [string] email
 * @param  [string] password
 * @param  [boolean] remember_me
 * @return [string] access_token
 * @return [string] token_type
 * @return [string] expires_at
 */
public function login(Request $request)
{
    $request->validate([
        'email'       => 'required|string|email',
        'password'    => 'required|string',
        'remember_me' => 'boolean',
    ]);
    $credentials = request(['email', 'password']);if (!Auth::attempt($credentials)) {
        return response()->json([
            'message' => 'Unauthorized',
        ], 401);
    }

    $user        = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token       = $tokenResult->token;if ($request->remember_me) {
        $token->expires_at = Carbon::now()->addWeeks(1);
    }

    $token->save();return response()->json([
        'access_token' => $tokenResult->accessToken,
        'token_type'   => 'Bearer',
        'expires_at'   => Carbon::parse(
            $tokenResult->token->expires_at
        )->toDateTimeString(),
    ]);
}

0
投票

尝试通过数组传递$凭据。

$credentials = [
            'email' => $request['email'],
            'password' => $request['password'],
        ];

if(!Auth::attempt($credentials))
        return response()->json([
            'message' => 'Unauthorized'
        ], 401);
© www.soinside.com 2019 - 2024. All rights reserved.