0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DeviseGemを使わないログイン機能の実装方法

Posted at

DeviseGemを使わないログイン機能の実装方法

Webアプリケーションにおいて、ユーザー認証機能はセキュリティとユーザーエクスペリエンスを確保するために不可欠です。しかし、すべてのプロジェクトでDeviseGemなどの認証フレームワークを使用するわけではありません。ここでは、DeviseGemを使わない基本的なログイン機能の実装方法を解説します。

サインインとログインの基本的な仕組み

セッションの利用

  • ユーザーがログインすると、そのユーザーのIDがセッション変数に保存されます(session[:user_id] = @user.id)。
  • ブラウザはこのセッション情報を受け取り、以降のリクエストにセッションIDを含めてサーバーに送信します。
  • サーバー側はセッションIDを確認し、それに基づいてユーザーがログイン済みであるかどうかを判断します。
  • ユーザーログアウトして際は、ユーザーのIDをセッションから剥奪します(session[:user_id] = nil)。

カレントユーザーの設定

  • セッションに保存されているユーザーIDを使用して、現在ログインしているユーザー(カレントユーザー)を取得します(@current_user = User.find_by(id: session[:user_id]))。

権限制御の実装

ログイン確認

  • 各アクションを実行する前に、ユーザーがログインしているかどうかを確認します。例えば、if @current_userのように条件分岐を行うことで、ログインしていないユーザーには特定のアクションを制限できます。

ユーザー特定の権限制御

  • 対象のアクションが特定のユーザーにのみ許可される場合、例えばユーザーがその投稿のオーナーであるかどうかを確認します(例: @post.user_id != @current_user.id)。これにより、他のユーザーが特定のデータを編集または削除することを防げます。

まとめ

DeviseGemを使用しないログイン機能の実装は、セッションの管理とカレントユーザーの確認に重点を置きます。これにより、セキュリティを確保しつつ、アプリケーションのユーザー認証システムを独自にカスタマイズできます。また、適切な権限制御により、アプリケーションの安全性を高め、ユーザーのデータ保護に寄与します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?