나 이외의 사용자 페이지에 액세스하지 않는 설정

2669 단어 Rails

이 기사에서 배우는 것



URLhttp://localhost:3000/users/1이 마지막 1을 2라는 바람에 직접 입력하면 다른 사용자 페이지로 전환 할 수 있습니다.
이번에는

①접근시키지 않는다
② 존재하지 않는 사용자의 경우 ActiveRecord::RecordNotFound 예외가 아니라 nil을 반환한다.

설정을 합니다.

①접근시키지 않는다



app/controller/application_controller
def user_check
  return if User.find(params[:id]) == current_user # もし入力した数値のidユーザーとログイン中のユーザが一緒ならこのメソッドを抜ける

  flash[:alert] = '警告:禁止行為'
  redirect_to user_path(current_user)
end

app/controller/users_controller
before_action :user_check

그러면 내 페이지로 리디렉션되어 플래시 메시지가 표시됩니다.

② 존재하지 않는 사용자의 경우 ActiveRecord::RecordNotFound 예외가 아니라 nil을 반환한다.



find를 사용하여 존재하지 않는 사용자 id의 경우 이런 일이 발생합니다.


이용자가 예외적인 일을 하려고 하고 있기 때문에 따로 이것이라도 좋을까라고 생각하면서 예외를 표시시키지 않는 방법을 조사・・・

find를 find_by_id를 사용하는 것으로 nil이 돌아오기 때문에 가능한 것을 알았습니다!
def user_check
  return if User.find_by_id(params[:id]) == current_user

  flash[:alert] = '警告:禁止行為'
  redirect_to user_path(current_user)
end

이제 예외가 아니라 자신의 페이지로 리디렉션됩니다.

생각이나 기술 내용이 이상한 등, 뭔가 눈치채는 점이 있으면 지적해 주시면 다행입니다.

좋은 웹페이지 즐겨찾기