LaravelでIDを使用したログインの実装方法


  1. ルートの設定: まず、routes/web.phpファイルを開き、ログイン用のルートを設定します。以下のように設定します。
Route::get('/login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('/login', 'Auth\LoginController@login');
  1. コントローラの作成: 次に、ログインに関連するロジックを持つコントローラを作成します。以下のコマンドを使用して、コントローラを生成します。
php artisan make:controller Auth\LoginController

生成されたコントローラは、app/Http/Controllers/Auth/LoginController.phpに配置されます。

  1. コントローラの実装: LoginControllerの中身を以下のように編集します。
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
    public function showLoginForm()
    {
        return view('auth.login');
    }
    public function login(Request $request)
    {
        $credentials = $request->only('id', 'password');
        if (Auth::attempt($credentials)) {
            // ログイン成功時の処理
            return redirect()->intended('/dashboard');
        } else {
            // ログイン失敗時の処理
            return back()->withErrors(['id' => '認証に失敗しました']);
        }
    }
}
  1. ビューの作成: ログインフォームを表示するためのビューを作成します。resources/views/auth/login.blade.phpを作成し、以下のように編集します。
<form method="POST" action="{{ route('login') }}">
    @csrf
    <div>
        <label for="id">ID</label>
        <input id="id" type="text" name="id" required autofocus>
    </div>
    <div>
        <label for="password">パスワード</label>
        <input id="password" type="password" name="password" required>
    </div>
    <div>
        <button type="submit">ログイン</button>
    </div>
</form>
  1. ログイン後のリダイレクト先の設定: ログイン後にリダイレクトする先を指定する必要があります。app/Http/Controllers/Auth/LoginController.phpのredirect()->intended('/dashboard')となっている部分を適宜変更してください。

以上で、IDを使用したログインの実装が完了しました。これにより、ユーザーは入力したIDとパスワードを使用してログインすることができます。

注意事項: 安全性の観点から、パスワードはハッシュ化して保存する必要があります。Laravelのデフォルトのユーザーテーブルを使用している場合は、パスワードのハッシュ化は自動的に行われます。