繁体   English   中英

laravel 7 sanctum Hash::check 总是返回 false

[英]laravel 7 sanctum Hash::check always returns false

我正在尝试使用 sanctum 构建 laravel auth api 并且我遵循了文档但收到此错误:

{
"message": "The given data was invalid.",
"errors": {
    "data": [
        "The provided credentials are incorrect."
    ]
}

}

这是 controller:

public function login(Request $request)
{
    $request->validate([
        'email' => 'required',
        'password' => 'required',
        'device_name' => 'required',
    ]);

    $user = User::where('email', $request->email)->first();

    if (! $user || ! Hash::check($request->password, $user->password)) {
        throw ValidationException::withMessages([
            'data' => ['The provided credentials are incorrect.'],
        ]);
    }

    $token = $user->createToken($request->device_name)->plainTextToken;

        $response = [
            'user' => $user,
            'token' => $token,
        ];

        return response($response, 201);

    return $user->createToken($request->device_name)->plainTextToken;

}

我找到了这个解决方案,但即使密码错误它也会返回“true”:

Laravel Hash::check() 总是返回 false

尝试这种方式,使用attempt

$request->validate([
  'email' => 'required|email|string',
  'password' => 'required|string',
  'device_name' => 'required',
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
return response()->json([
  'message' => 'Unauthorized'
], 401);
$user = $request->user();
$token = $user->createToken($request->device_name)->plainTextToken;
//return....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM