0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby on Rails チュートリアル 非ログインユーザーからのプロフィールページへのアクセスを防ぐ

Posted at

Ruby on Rails チュートリアル(第7版)を1周走破しましたが、個人的に気になる点があったので修正してみました。

気になる点とは、
”非ログインユーザーが、登録済みユーザーのプロフィールページにアクセスできる”点です。
(プロフィール編集ページにはアクセスできないため、問題ないのでしょうか?)

/users/(id) リクエストを送信すると、非ログインユーザーでもアクセス可能でした。

この操作を行っている箇所を探します。

users_controller.rb
  def show
    @user = User.find(params[:id])
    redirect_to root_url and return unless @user.activated?
    @microposts = @user.microposts.paginate(page: params[:page])
  end

showアクションでプロフィールページが表示されています。
この前にログイン確認をしたいので、

users_controller.rb
class UsersController < ApplicationController
  before_action :logged_in_user, only: [:index, :edit, :update, :destroy,
                                        :following, :followers]
.
.
.
end

logged_in_userメソッド(ログイン確認)をshowアクション前にも行うようにします。

before_action :logged_in_user に :show を追加

users_controller.rb
class UsersController < ApplicationController
  before_action :logged_in_user, only: [:index, :show, :edit, :update, :destroy,
                                        :following, :followers]
.
.
.
end

これで非ログインユーザーが、登録済みユーザーのプロフィールページにアクセスすると、
ログインページにリダイレクトされるようになりました。
スクリーンショット 2023-02-01 20.18.38.png

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?