example - Recomendaciones para un captcha en Ruby on Rails
recaptcha invisible required (7)
Me gustaría implementar un captcha en un proyecto de Rails para un envío de formulario, pero no estoy seguro de qué hacer. Me inclino por la simplicidad de implementación y la confiabilidad cuando estoy en uso, por ser demasiado sofisticado, ya que mi aplicación no requiere un nivel de seguridad demasiado alto.
¿Alguien tiene alguna recomendación?
Instalación
Agrega lo siguiente a tu GEMFILE
gem "galetahub-simple_captcha", :require => "simple_captcha"
o
gem ''galetahub-simple_captcha'', :require => ''simple_captcha'',
:git => ''git://github.com/galetahub/simple-captcha.git''
Luego ejecute bundle install
si está usando Bundler (o use el administrador de paquetes para su configuración de Rails)
Preparar
Después de la instalación, siga estos sencillos pasos para configurar el complemento. La configuración dependerá de la versión de los rieles que esté utilizando su aplicación.
rails generate simple_captcha
rake db:migrate
Uso
Controlador basado
Agregue la siguiente línea en el archivo "app / controllers / application.rb"
ApplicationController < ActionController::Base
include SimpleCaptcha::ControllerHelpers
end
En el archivo de vista dentro de las etiquetas de formulario agregue este código
<%= show_simple_captcha %>
y en la acción del controlador autentificarlo como
if simple_captcha_valid?
do this
else
do that
end
Modelo basado
En el archivo de vista dentro de las etiquetas de formulario agregue este código
<%= show_simple_captcha(:object=>"user") %>
y en la clase modelo agregar este código
class User < ActiveRecord::Base
apply_simple_captcha
end
Ayudante de FormBuilder
<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>
Validando con captcha
NOTA: @ usuario.válido? seguirá funcionando como debería, no validará el código captcha.
@user.valid_with_captcha?
Ahorrar con captcha
NOTA: @ user.save seguirá funcionando como debería, no validará el código captcha.
@user.save_with_captcha
Integración formal
SimpleCaptcha detecta si usas Formtastic y anexa
“SimpleCaptcha::CustomFormBuilder”.
<%= form.input :captcha, :as => :simple_captcha %>
Opciones y ejemplos
Ver opciones
*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’
Opciones globales
image_style - provides the specific image style for the captcha image.
Hay ocho estilos diferentes disponibles con el complemento como ...
- simply_blue
- simplemente rojo
- simplemente_green
- gris carbón
- embosed_silver
- todo negro
- distorted_black
- casi_invisible
El estilo predeterminado es ''simply_blue''. También puede especificar ''aleatorio'' para seleccionar el estilo de imagen aleatorio.
distortion - handles the complexity of the image. The :distortion can be set to ‘low’, ‘medium’ or ‘high’. Default is ‘low’.
* Crear "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
Puedes añadir tu propio estilo:
SimpleCaptcha.setup do |sc|
sc.image_style = ''mycaptha''
sc.add_image_style(''mycaptha'', [
"-background ''#F4F7F8''",
"-fill ''#86818B''",
"-border 1",
"-bordercolor ''#E0E2E3''"])
end
También puede proporcionar la ruta donde está instalado image_magick:
SimpleCaptcha.setup do |sc|
sc.image_magick_path = ''/usr/bin'' # you can check this from console by running: which convert
end
Puede proporcionar la ruta donde se deben almacenar los archivos tmp. Es útil cuando no tiene acceso a / tmp (directorio predeterminado)
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
¿Cómo cambiar el CSS de los elementos DOM de SimpleCaptcha?
Puede cambiar el CSS de los elementos de DOM SimpleCaptcha según su necesidad en este archivo.
* / app / views / simple_captcha / _simple_captcha.erb *
Ver ejemplos
Ejemplo basado en controlador
<%= show_simple_captcha %>
<%= show_simple_captcha(:label => "human authentication") %>
Ejemplo basado en modelo
<%= show_simple_captcha(:object => ''user'', :label => "human authentication") %>
Opciones de modelo
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.
Ejemplo de modelo
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
Bueno, ReCaptcha hará el trabajo y hay muchos tutoriales en línea.
Sin embargo, debe escribir un "def create" (método de creación) correcto en su controlador que pase todo lo que esté en su formulario y valide Recaptcha al mismo tiempo. Entonces funcionará muy bien.
Había un pequeño problema con eso. Después de insertar ReCaptcha en mi formulario, la validación del formulario dejó de funcionar. Sin embargo, se puede arreglar con un código fácil insertado en el archivo de modelo:
after_validation :on => :create
(: create = es el método "def create" en su controlador). Forzará el formulario para validar el formulario primero y luego validar Recaptcha.
He usado Recaptcha en uno de mis proyectos PHP. http://recaptcha.net/
Según el sitio, también tiene complementos para Ruby ( http://recaptcha.net/resources.html ). Aunque el primer enlace ruby no funcionó, el siguiente enlace todavía funciona. http://svn.ambethia.com/pub/rails/plugins/recaptcha/ Compruébalo.
He utilizado ambethia recapchat para la aplicación de rieles. más fácil que otro
La forma más fácil de agregar un CAPTCHA a su aplicación Rails es usar Ambethia reCAPTCHA :
1. Instalación:
config.gem "ambethia-recaptcha", :lib => "recaptcha/rails",
:source => "http://gems.github.com"
También puedes instalarlo como un complemento, si quieres.
2. Obtenga una cuenta reCAPTCHA:
Tienes que crear una clave reCAPTCHA. Puedes hacerlo en el sitio reCAPTCHA .
3. Uso:
Utilice recaptcha_tags
para generar el código HTML necesario y luego verifique la entrada con verify_recaptcha
.
4. Lectura adicional:
Si está buscando un CAPTCHA que valide, y sea (casi) tan fácil de usar como reCAPTCHA, pruebe mi SlideCAPTCHA. (Lo escribí hace unos días, necesita algunas pruebas en el uso de la vida real). Basé su proceso de implementación en el complemento reCAPTCHA, pero puede diseñarlo con CSS.
Sin embargo, sí requiere Ruby / GD, así que si aún no tienes GD, ¡no puedo prometer que GD sea fácil de instalar y usar!
reCAPTCHA para rieles es excelente, en términos de funcionalidad. Sin embargo, si necesita validación de XHTML, ¡ejecute RAY AWAY! Este complemento no (y probablemente nunca) validará. Me parece vergonzoso que solo una página de todo mi sitio no se valide, es la página con reCAPTCHA. Si hubiera alguna otra opción, la tomaría.