質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

985閲覧

Laravelでのハッシュチェックエラーについて

qp09qp

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2024/07/17 04:51

編集2024/07/17 04:52

実現したいこと

ハッシュチェック「Hash::check」時に起こるエラーを解決したい

発生している問題・分からないこと

ログイン機能を実装中です。
パスワードをハッシュ化して保存したあと、ログイン時にRequestで入ってきたパスワードと比較してもエラーが起こります

エラーメッセージ

error

1「This password does not use the Bcrypt algorithm.」

該当のソースコード

Laravel

1namespace App\Http\Controllers; 2 3use App\Http\Controllers\Controller; 4use Illuminate\Http\Request; 5use Illuminate\Support\Facades\Auth; 6use App\Models\Member; 7use Illuminate\Support\Facades\Hash; 8 9 /** 10 * ログイン処理を行う 11 * @param Request $request, Member $member 12 * @return view 13 */ 14 public function show(Request $request, Member $member) 15 { 16 17 $request->validate([ 18 'email' => 'required|email', 19 'password' => 'required|string', 20 ]); 21 22 $email = $request->input('email'); 23 $password = $request->input('password'); 24 25 // データベースからメールアドレスが一致するメンバーを取得 26 $member = Member::where('email', $email)->first(); 27 28 // メンバーが存在し、パスワードが一致するか確認 29 if ($member && Hash::check($member->password, $password)) { //→エラー箇所 30 return view('login_id')->with(['member' => $member]); 31 } 32 33 // 認証に失敗した場合 34 return back()->withErrors(['email' => 'メールアドレスまたはパスワードが間違っています。'])->withInput(); 35 }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

namespace App\Http\Controllers;

use App\Models\Member;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;

/**
* 会員登録処理をする
* @param Request $request
* @return view
*/
public function registerCreate(Request $request)
{
// バリデーション
$request->validate([
'name' => 'required|string|max:255',
'password' => 'required|string|confirmed',
]);

// 新しいユーザーを作成 $member = Member::latest()->first(); $member->name = $request->name; $member->password = Hash::make($request->password); $member->save(); // ユーザー登録後の処理 return view('registerCheck')->with(['member' => $member]); }

補足

.envファイルでは
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:DxViSDBNSiYc/Lh9lrt7srAqsMHN303v+BQeGl0KDSk=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost

SQLでは以下のように保存されています。
|id|name|mail|password
| 55 | taro | aaa@aaa.com | $2y$12$WTx2tPQxk2FtES98GEvAb.0faWR.T4g.wghnFjnOv62UsOzUBnQt6

となっています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Hash::check()の第1引数と第2引数が逆です。
Hash::check(<入力文字列>, <ハッシュ化された文字列>); とするのが正しいです。
https://laravel.com/docs/11.x/hashing#verifying-that-a-password-matches-a-hash

投稿2024/07/17 06:07

Eggpan

総合スコア3257

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qp09qp

2024/07/17 06:31

無事動きました。ありがとうございます
Eggpan

2024/07/17 09:41

解決おめでとうございます! よろしければベストアンサーに選んでいただき、質問を解決状態にしてもらえればと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問