Я хотел бы реализовать капчу в проекте Rails для отправки формы, но я не уверен, что с ним делать. Я склонен к простоте реализации и надежности при использовании, поскольку он слишком сложный, поскольку мое приложение не требует слишком высокого уровня безопасности.
Ответ 2
Установка
Добавьте в свой GEMFILE следующее:
gem "galetahub-simple_captcha", :require => "simple_captcha"
или
gem 'galetahub-simple_captcha', :require => 'simple_captcha',
:git => 'git://github.com/galetahub/simple-captcha.git'
Затем запустите bundle install
, если вы используете Bundler (или используйте диспетчер пакетов для конфигурации Rails)
Настройка
После установки выполните следующие простые шаги для настройки плагина. Настройка будет зависеть от версии рельсов, которые использует ваше приложение.
rails generate simple_captcha
rake db:migrate
Использование
На основе контроллера
Добавьте в файл следующую строку: "app/controllers/application.rb"
ApplicationController < ActionController::Base
include SimpleCaptcha::ControllerHelpers
end
В файле вида в тегах формы добавьте этот код
<%= show_simple_captcha %>
и в действии контроллеров аутентифицировать его как
if simple_captcha_valid?
do this
else
do that
end
Модель на основе
В файле вида в тегах формы добавьте этот код
<%= show_simple_captcha(:object=>"user") %>
и в классе модели добавьте этот код
class User < ActiveRecord::Base
apply_simple_captcha
end
Помощник FormBuilder
<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>
Проверка с помощью captcha
ПРИМЕЧАНИЕ: @user.valid? будет по-прежнему работать как следует, он не будет проверять код captcha.
@user.valid_with_captcha?
Сохранение с помощью captcha
ПРИМЕЧАНИЕ. @user.save все равно будет работать так, как должен, он не будет проверять код captcha.
@user.save_with_captcha
Форматическое интегрирование
SimpleCaptcha обнаруживает, использует ли ваше приложение Formtastic и добавляет
"SimpleCaptcha::CustomFormBuilder".
<%= form.input :captcha, :as => :simple_captcha %>
Параметры и примеры
Опции просмотра
*label* - provides the custom text b/w the image and the text field, the default is "type the code from the image"
*object* - the name of the object of the model class, to implement the model based captcha.
*code_type* - return numeric only if set to ‘numeric’
Глобальные параметры
image_style - provides the specific image style for the captcha image.
Существует восемь различных стилей, доступных с плагином, как...
- simply_blue
- simply_red
- simply_green
- charcoal_grey
- embosed_silver
- all_black
- distorted_black
- almost_invisible
Стиль по умолчанию - 'simple_blue. Вы также можете указать "random" для выбора стиля случайного изображения.
distortion - handles the complexity of the image. The :distortion can be set to ‘low’, ‘medium’ or ‘high’. Default is ‘low’.
* Создать "rails_root/config/initializers/simple_captcha.rb" *
SimpleCaptcha.setup do |sc|
# default: 100x28
sc.image_size = '120x40'
# default: 5
sc.length = 6
# default: simply_blue
# possible values:
# 'embosed_silver',
# 'simply_red',
# 'simply_green',
# 'simply_blue',
# 'distorted_black',
# 'all_black',
# 'charcoal_grey',
# 'almost_invisible'
# 'random'
sc.image_style = 'simply_green'
# default: low
# possible values: 'low', 'medium', 'high', 'random'
sc.distortion = 'medium'
end
Вы можете добавить свой собственный стиль:
SimpleCaptcha.setup do |sc|
sc.image_style = 'mycaptha'
sc.add_image_style('mycaptha', [
"-background '#F4F7F8'",
"-fill '#86818B'",
"-border 1",
"-bordercolor '#E0E2E3'"])
end
Вы можете указать путь, в котором также установлена функция image_magick:
SimpleCaptcha.setup do |sc|
sc.image_magick_path = '/usr/bin' # you can check this from console by running: which convert
end
Вы можете указать путь, где должны храниться tmp файлы. Его полезно, если у вас нет доступа к /tmp (каталог по умолчанию)
SimpleCaptcha.setup do |sc|
sc.tmp_path = '/tmp' # or somewhere in project eg. Rails.root.join('tmp/simple_captcha').to_s, make shure directory exists
end
Как изменить CSS для элементов DOM SimpleCaptcha?
Вы можете изменить CSS элементов DOM SimpleCaptcha в соответствии с вашими потребностями в этом файле.
*/приложение/просмотров/simple_captcha/_simple_captcha.erb *
Примеры примеров
Пример на основе контроллера
<%= show_simple_captcha %>
<%= show_simple_captcha(:label => "human authentication") %>
Пример на основе модели
<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>
Параметры модели
message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"
add_to_base - if set to true, appends the error message to the base.
Пример моделей
class User < ActiveRecord::Base
apply_simple_captcha
end
class User < ActiveRecord::Base
apply_simple_captcha :message => "The secret Image and code were different", :add_to_base => true
end