나 이외의 사용자 페이지에 액세스하지 않는 설정
2669 단어 Rails
이 기사에서 배우는 것
URL
http://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
이제 예외가 아니라 자신의 페이지로 리디렉션됩니다.
생각이나 기술 내용이 이상한 등, 뭔가 눈치채는 점이 있으면 지적해 주시면 다행입니다.
Reference
이 문제에 관하여(나 이외의 사용자 페이지에 액세스하지 않는 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/roy06299/items/319feb22b40327c8d6a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)