アクションの前後に差し込む処理をフックという。
フックの例
class BooksController < ApplicationController
protect_from_forgery except: [:destroy]
before_action :set_book, only: [:show, :destroy]
def show
respond_to do |format|
format.html
format.json
end
end
def destroy
@book.destroy
respond_to do |format|
format.html { redirect_to "/" }
format.json { head :no_content }
end
end
private
def set_book
@book = Book.find(@params[:id])
end
end
この中の以下部分をフック、またはフィルターと呼ぶこともある。
protect_from_forgery except: [:destroy]
before_action :set_book, only: [:show, :destroy]
上記の “protect_from_forgery except” の役割は、CSRF対策をOFFにするというもの。
CSRF対策とは
cross-site request forgeries の略
悪意ある第三者が用意したリンクなどをサービス利用者がクリックした際に、本人が意図しないにもかかわらずデータの削除が行われてしまう問題のこと。
RailsではGET以外のリクエストではセキュリティートークンが発行されるようになっており、そのトークンの検証により、第三者からのリクエストでないことを判定している。
“protect_from_forgery except” を記述することによって検証を行わないように制御ができる。
コメント