標籤:
(1)新增gem to Gemfile ,then bundle install
gem ‘easy_captcha‘, git: ‘https://github.com/phatworx/easy_captcha.git‘gem ‘rmagick‘
(2)after bundle execute
rails g easy_captcha:install
運行完這句話,可以看到app/controllers/application_controller.rb 和 config/routes.rb 的變化
class ApplicationController < ActionController::Base
+ # reset captcha code after each request for security
+ after_filter :reset_last_captcha_code!
config/routes.rb 裡多了一句
Cms::Application.routes.draw do
+ captcha_route
(3)修改使用者登入檔案app/controllers/sessions_controller.rb
def create if user = CmsUser.authenticate(params[:username], params[:password]) session[:user_id] = user.id- redirect_to root_path+ if captcha_valid? params[:captcha]+ redirect_to root_path+ else+ flash.now[:error] = "驗證碼錯誤"+ render :new+ end else flash.now[:error] = "使用者名稱或密碼錯誤" render :new
(4)修改對應的view,app/views/sessions/new.html.erb
<%= form_tag login_path, method: :post, class: "form-signin" do %> <input type="text" name="username" class="form-control" placeholder="Email" required autofocus> <input type="password" name="password" class="form-control" placeholder="Password" required>+ <p>請輸入驗證碼 <%= text_field_tag :captcha %></p>+ <p><%= captcha_tag %></p> <button class="btn btn-lg btn-primary btn-block" type="submit">登入</button> <% if flash[:error] %> <p class="notice" style="color:red;"><%= flash[:error] %></p> <% end %> <% end %>
使用easy_captcha產生登入驗證碼 ruby on rails