rails4.1 CHAPTCHAを使う
CHAPTCHAとは
入力フォームで機械的な投稿を防ぐために、画像の読みにくい文字を入力して認証させるやつ。
↓こんなの
simple_captchaが便利そう
というかsimple_captchaしか見当たらない。
正しく動作させるまでに結構手こずった。手順通りやってもダメじゃん。
captcha画像の404エラーとか、
Error while running convert: sh: convert: command not found
みたいなエラーでつまづいている人に役立つかも。
インストール方法
Macでの方法
1 brew install ImageMagick
2 brew install ghostscript
3 Gemfileに以下を追記してbundle install
gem 'simple_captcha2', git: 'https://github.com/pludoni/simple-captcha.git', require: true
ここでインストール終了。
設定方法
1 rails g simple_captch を実行
2 rake db:migrate を実行
3 ApplicationControllerに以下を追記
include SimpleCaptcha::ControllerHelpers
4 表示させたいViewに以下を追記
<%= show_simple_captcha %>
5 実際に表示されていることと確認して終了
実際に機能させる
1 実際にCAPTCHAを利用するコントローラで以下の処理を追記
if simple_captcha_valid? # 認証成功したときの処理 else # 認証失敗したときの処理 end
カスタマイズする
1 CAPTCHAの文字入力フォームにクラスを適用したい場合
<!-- こうではなく <%= show_simple_captcha %> --> <!-- こう --> <%= show_simple_captcha(input_html: { class: 'classname' }) %>
bootstrap等でデザインを統一しているとき等に役立つ
2 生成される画像の複雑さをあげる
config/initializers/simple_captcha.rbを作り以下を追記
SimpleCaptcha.setup do |sc| # 画像のサイズ default: 100x28 sc.image_size = '200x80' # 文字列の長さ default: 5 sc.length = 6 # 画像のスタイル 固定よりランダムが良い sc.image_style = 'random' # 画像のグニャグニャ感のレベル(上下の揺れ) default: low # possible values: 'low', 'medium', 'high', 'random' sc.distortion = 'high' # 画像のグニャグニャ感のレベル(立体感のある揺れ?)default: medium # possible values: 'none', 'low', 'medium', 'high' sc.implode = 'medium' end