Laravelのログイン画面URLを可変にする
公開: 2023-10-04
更新: 2023-10-05
Laravelに限らずかもしれませんが、ログイン画面のデフォルトのURLって/login
になっていないでしょうか。WordPressでも/login
や/admin
がデフォルトですし、知っていれば第三者が簡単にログイン画面にアクセスできてしまいます。
ルート定義で全く異なるURLを直接指定することもできますが、オープンソースでは意味がありません。そこで、このサイトではログインURLを環境変数に設定して可変にする方法を試しました。
要約
なぜ可変にするか?
- ログインURLを推測されにくくすることで不正アクセスのリスクを下げる
どのように可変にするか?
- 任意のURLを環境変数として定義し、
config
ヘルパ関数を経由してルート定義で呼び出し、引数として渡す
設定手順
1. 任意のURLを環境変数に定義
.env
に以下のように定義します。
LOGIN_ROUTE=login/hogehoge
2. configファイルの設定
config
ディレクトリの中の任意の設定ファイルを使用します。例として、config/myconf.php
を新たに作成します。.env
に定義したURLをenv
へルパで呼び出して任意のキーにセットします。
// config/myconf.php
return [
'login_route' => env('LOGIN_ROUTE', 'login'),
];
3. ルート定義で呼び出し
config
ヘルパ関数を使用して、設定変数からlogin/hogehoge
を取得してセットします。
// routes/auth.php
Route::get(config('myconf.login_route'), [MyAuthenticateController::class, 'create'])->name('login');
最後に
routes/auth.php
のルート定義の変更前後はこちら。
変更前:
Route::middleware('guest')->group(function () {
Route::get('/login', [MyAuthenticateController::class, 'create'])->name('login');
Route::post('/login', [MyAuthenticateController::class, 'authenticate']);
});
変更後:
Route::middleware('guest')->group(function () {
Route::get(config('myconf.login_route'), [MyAuthenticateController::class, 'create'])->name('login');
Route::post(config('myconf.login_route'), [MyAuthenticateController::class, 'authenticate']);
});