EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

Laravel投稿サイト構築.87 -パスワード再設定メール調整/書き込みIP記録/通信制限-

前回はパスワードを忘れた際の画面のデザイン調整、日本語化を行った。

 

目次

 

パスワードリセット用メールの文言を日本語化

メール文言の日本語化は一度やっているが復習。

-----

vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php

上のテンプレートを編集。

英語を日本語にする場合は該当する文言を以下のファイルに追記。

-----

lang\jp.json

 

書き込んだユーザのIPアドレスを記録

不正防止のため、書き込みを行ったユーザのIPアドレスを保存したい。

threadsテーブル、repliesテーブルに user_ip項目を追加する。

いいね機能のlikesテーブルには初期で持っていた項目。

migration

-----

php artisan make:migration add_user_ip_to_threads --table=threads

php artisan make:migration add_user_ip_to_replies --table=replies

-----

public function up()
{
  Schema::table('threads', function (Blueprint $table) {
    $table->string('user_ip');
  });
}

-----

model

protected $fillable = [
          'category', 
          'user_identifier', 
          'message_title', 
          'message', 
          'user_id', 
          'link_url',
          'user_ip',
          ];

-----

Controller

-----

public function store(Request $request){

  $user_ip = $_SERVER['REMOTE_ADDR'];
  if( array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER ) ){
    $user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  $form['user_ip'] = $user_ip;

}

 

連続アクセスの抑制

連続アクセスやDDoS対策のために連続アクセスを制限する。

-----

app\Providers\RouteServiceProvider.php

// ↓は一分間に10回までのアクセスを許可

protected function configureRateLimiting()
{
  RateLimiter::for('api', function (Request $request) {
    return Limit::perMinute(10)->by($request->user()?->id ?: $request->ip());
  });
}

-----

 

見た目には何も変化がなく地味な対応。

今回は以上。

 

次回はいよいよ音声機能を実装していきたい。

 

続く