なにこれ
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版という本の p.239 に「コラム:クッションページ」というのがある。Rails でこのクッションページを作ったらどうなるかな、と思って作成することにした。
コードについて
- 今回のコードは Github のレポジトリ にもあります
- slim という gem を使っています
さて、作っていきますか
とりあえず、コントローラーをつくる
$ rails g controller confirmation_of_external_pages show
ルーティングはこんなかんじ
Rails.application.routes.draw do
resources :confirmation_of_external_pages, only: [:show]
end
コントローラーはこんな感じ
class ConfirmationOfExternalPagesController < ApplicationController
def show
@uri = Base64.urlsafe_decode64(params[:id])
end
end
ビューはちょっとプロダクション向けでないコードを含む
h1 クッションページ
hr
p 外部へ移動しますが、よろしいでしょうか。よろしければ上記のリンクをクリックしてください
p =link_to @uri, @uri
hr
p 練習用
ul
li =link_to "https://google.co.jp/", confirmation_of_external_page_path("aHR0cHM6Ly9nb29nbGUuY28uanAv")
li =link_to "https://www.yahoo.co.jp/", confirmation_of_external_page_path("aHR0cHM6Ly93d3cueWFob28uY28uanAv")
li =link_to "https://www.sbcr.jp/product/4797393163/", confirmation_of_external_page_path("aHR0cHM6Ly93d3cuc2Jjci5qcC9wcm9kdWN0LzQ3OTczOTMxNjMv")
できあがったもの
テスト
System Test とコントローラー向けのコードは書いたが、あまり自信がないのでココにはのせない。Github のレポジトリ をみていただければと思う。
おわりに
クッションページなんてすぐにできるでしょ、と思ったら2時間も経っていた。まぁ、そんなものか。