私はLaravelが初めてです。テストプロジェクトで学習するだけです。
Vue を使用して、Laravel 8 と Sanctum バックエンドで SPA を作成しています。
登録システムの作成に成功しましたが、ログインできません。
以下は私のコードです。
登録機能
{
// Validate the user input
$request->validate([
"company" => ["required"],
"firstName" => ["required"],
"lastName" => ["required"],
"phone" => ["required"],
"email" => ["required", "email", "unique:users"],
"password" => ["required", "min:8", "confirmed"],
]);
// Unique Company Identifier
$uniqueCode = unique_company_code();
// Create A DB Name
$dbName = "tn_";
$dbName .= substr(str_replace(".", "", str_replace(" ", "", $request->company)), 0, 4);
$dbName .= substr($uniqueCode, 0, 6);
try
{
DB::beginTransaction();
$company = Company::create([
"Name" => $request->company,
"Code" => $uniqueCode,
"DatabaseName" => $dbName,
"Status" => "Waiting Activation",
"AllowedUsers" => 3,
"RegisteredUsers" => 1
]);
User::create([
"CompanyID" => $company->id,
"FirstName" => $request->firstName,
"LastName" => $request->lastName,
"Phone" => $request->phone,
"Email" => $request->email,
"Password" => Hash::make($request->input("password")),
"AccountType" => "Admin"
]);
// Create New DB
$query = "CREATE DATABASE IF NOT EXISTS $dbName CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';";
DB::statement($query);
DB::commit();
return response()->json(["action" => "Success", "msg" => "<p>Congratulations, Your Account has been created!!<br><b>You will get a confirmation email once your Account has been Approved and Activated</b></p>"], 200);
}
catch (\Exception $e)
{
DB::rollback();
return response()->json(array("Error" => "<p>Oop...Seems like there was an error at our end.<br /> Please contact us at <b>support@simpleflow.in</b> for assistance</p>"), 500);
logger($e->getMessage());
}
}
ログイン機能
{
$request->validate([
"email" => "required",
"password" => "required"
]);
$user = User::where("Email", $request->email)->first();
$check = Hash::check($request->password, $user->Password);
//return $check;
if (Auth::attempt(["Email" => $request->email, "password" => $request->password]))
{
return response()->json(Auth::user(), 200);
}
throw ValidationException::withMessages([
"Login" => "The Provided Credentials are Incorrect.",
"emailId" => $request->email,
"password" => $request->password
]);
}
注: Auth::attempt() 関数で「Password」と「password」の両方を試しましたが、機能しません
注 2 : コメント 'return $check' は、ブラウザー コンソールで '1' を返します。これは、ハッシュ化されたパスワード (ユーザー モデルに読み込まれる) が、要求内のパスワードと一致することを意味します...そうですか?
昨夜からこれを修正しようとしていて、複数のグーグル検索を行い、いくつかのことも試しましたが、何も機能しません.
また、何が失敗しているのかわからないように、Auth::attempt メソッドを直接デバッグする方法を見つけることもできません。
助けてください...これが原因で髪を引っ張っています。
更新:だから私はちょうどいじっていました...そして、テーブルの列名を(電子メール、パスワード)から(電子メール、パスワード)に変更しました...そして私のコードでは、に戻しました
$request->only('email', 'password')
何らかの理由で...それは機能します....なぜこのエラーが発生したのか、テーブルの列名が大文字になっている場合にどのように機能させることができるのか、まだわかりません(私はそれが好きです... :/ )
したがって、私の問題は解決されていますが、ATM ...これについての説明は本当にありがたいです...