認証

Flask

【Flask】Flask-Loginでログイン機能を実装する

こんにちは、かつコーチです。これまでの記事でデータベースの基本操作を学びました。今回は、その知識を活かして、Webアプリに欠かせない「ログイン機能」をFlask-Loginという拡張ライブラリで実装します。Flask-Loginとは?セッシ...
Java

【Spring Boot】JWT認証を実装する

こんにちは、かつコーチです。ここまでフォームログインとBCryptによるパスワード管理を扱ってきましたが、SPAやモバイルアプリ向けのAPIではセッションを持たないJWT認証を採用するケースが主流です。この記事は上級者向けとして、フォームロ...
Java

【Spring Boot】パスワードエンコーダ(BCrypt)の使い方

こんにちは、かつコーチです。前回の記事でUserDetailsServiceを実装しましたが、パスワードを平文のままデータベースに保存していませんか。万が一データベースが漏えいした場合、平文パスワードはそのまま全ユーザーのアカウント情報の漏...
Java

【Spring Boot】フォームログイン機能を実装する

こんにちは、かつコーチです。前回の記事でSpring Securityの基本を解説しましたが、.formLogin(Customizer.withDefaults())だけでは、Spring Securityが自動生成した無機質なログイン画...
Java

【Spring Boot】Spring Securityの基本を理解する

こんにちは、かつコーチです。spring-boot-starter-securityを依存関係に追加した瞬間、それまで自由にアクセスできていた画面が突然ログイン画面に切り替わって驚いた経験はありませんか。これはSpring Security...
JavaScript

【React】Protected Route(ログイン必須ページ)の実装方法

こんにちは、かつコーチです。前回は、JWTを使ってログイン状態を保持する仕組みについて解説しました。トークンを発行してフロント側で保持できるようになったら、次に考えたいのが「ログインしていない人には見せたくないページ」の扱いです。マイページ...
JavaScript

【React】JWTの扱い方:ログイン状態を保持する仕組み

こんにちは、かつコーチです。前回はReactアプリにおける認証の実装パターンを、全体像から解説しました。今回はその認証の裏側で動いている仕組み、JWT(JSON Web Token)にフォーカスして、Reactアプリでどう扱えばよいかを詳し...
JavaScript

【React】Reactアプリに認証機能を実装するパターン

こんにちは、かつコーチです。前回はReact Hook Formを使ったフォームバリデーションの実装方法を解説しました。フォームでログイン情報を受け取れるようになったところで、今回はいよいよ「認証」を扱います。認証はライブラリの使い方だけで...
Django

【Django】カスタムユーザーモデル(AbstractUser)を実装する

こんにちは、かつコーチです。前回の記事ではDjango標準のUserモデルを使ったログイン機能を扱いました。ただ実務では、標準のUserモデルをそのまま使い続けるプロジェクトはむしろ少数派です。「メールアドレスでログインさせたい」「電話番号...
Django

【Django】Django標準の認証システム(Userモデル)でログイン機能を作る

こんにちは、かつコーチです。前回はN+1問題とselect_related・prefetch_relatedによるパフォーマンス改善を解説しました。今回からは認証・セキュリティ分野に入り、Djangoに標準搭載されている認証システムを使った...
Laravel

【Laravel】ロール・権限管理の実装パターン

こんにちは、かつコーチです。前回はパスワードハッシュ化(bcrypt)の仕組みを解説しました。ログイン機能ができると、次にぶつかるのが「管理者だけがこの画面を見られるようにしたい」という要望です。今回はLaravelにおけるロール・権限管理...
Laravel

【Laravel】Policy・Gateで認可(権限チェック)を実装する

こんにちは、かつコーチです。前回はSanctumを使ったAPI認証を紹介しました。「誰なのか」を確認するのが認証だとすると、今回のテーマは「その人に何ができるのか」を確認する認可です。Laravelでは、この認可のロジックをPolicyとG...
Laravel

【Laravel】Laravel SanctumでAPI認証を実装する

こんにちは、かつコーチです。前回はBreeze・Jetstream・Fortify・Sanctumの違いを整理して、「どの認証機能を選べばいいか」の判断軸を紹介しました。今回はその中でも、SPA連携やモバイルアプリのバックエンドでよく使われ...
Laravel

【Laravel】Laravel Breeze・Jetstream・Fortify・Sanctumの違いを整理する:認証機能はどれを選ぶべき?

こんにちは、かつコーチです。前回はEloquentのキャスト・アクセサ・ミューテタの使い分けを解説しました。今回からは新しいテーマ、「認証・セキュリティ」に入っていきます。Laravelで会員登録・ログイン機能を作ろうとすると、必ずぶつかる...
JavaScript

【Next.js】middleware.tsでログイン必須ページを保護する

こんにちは、かつコーチです。前回はAuth.jsを使って、Next.jsアプリにログイン・ログアウト機能を実装しました。ただしAuth.jsのauth()をページごとに呼び出す方式だと、保護したいページが増えるたびにチェック処理を書き足すこ...
JavaScript

【Next.js】Auth.js(NextAuth)で認証機能を実装する

こんにちは、かつコーチです。ここまでのシリーズでは、App Routerの基本構造やServer Components・Client Componentsの使い分け、外部APIとのデータ連携まで扱ってきました。アプリの骨格ができてくると、次...
JavaScript

【Nuxt.js】nuxt-auth-utilsで認証機能を実装する

こんにちは、かつコーチです。Nuxtでアプリを作っていると、必ずぶつかるのが認証機能の実装です。自前でCookieやセッションを設計してもいいのですが、OAuth連携やパスワードハッシュ化まで含めると、意外と実装コストが高くなります。今回は...
JavaScript

【Vue】Vueアプリに認証機能を実装するパターン

こんにちは、かつコーチです。前回までのデータ連携編で、axios・VueUse・VeeValidateを使ったAPI連携とフォーム実装を扱いました。ここからは認証・セキュリティ編に入ります。第一弾は、Vueアプリに認証機能を組み込む際の代表...
Ruby

【Ruby on Rails】Deviseで本格的な認証機能を実装する

こんにちは、かつコーチです。自前で認証機能を作っていると、パスワードリセットやメール確認、アカウントロックなど、実装すべき機能がどんどん増えていきます。この記事では、認証gemの定番であるDeviseの導入手順と、実務でよく使う設定を整理し...
Ruby

【Ruby on Rails】has_secure_passwordで認証機能を実装する

こんにちは、かつコーチです。「ログイン機能を作りたいけど、Deviseのような大きなgemを入れるほどでもない」そんなときに便利なのが、Rails標準の機能であるhas_secure_passwordです。パスワードのハッシュ化や照合といっ...