最近我安装了 gem 'devise', '1.5.2'
并尝试将用户重定向到注册页面/注册页面如果用户不存在 . 我通过多次更改路由以及使用if / else语句修改devise / sessions_controller中的代码来尝试,如果用户身份验证失败然后重定向到注册,但我想我错过了一些重要但简单的东西 . 我正在寻找一些东西
1. user logins
1.1. if user.authenticate! is true then show him the root_path(dashboard/index) ELSE redirect to register/signup page
i have trying this by making many changes in devise/sessions_controller and also by creating new failure.rb so that i can redirect but everything failed and again i am landing to same page with the expected flash message..pls help me out
routes.rb
as :user, do
get '/users/sign_in' => 'devise/sessions#new'
post '/users/sign_in' => 'devise/sessions#create'
get '/users/change_password' => 'devise/registrations#change_password'
post 'users/update_password' => 'devise/registrations#update_password'
post '/users/password' => 'devise/passwords#create'
get '/users/password/edit' => 'devise/passwords#edit'
put '/users/password' => 'devise/passwords#update'
end
devise_for :users, :controllers => { :"devise/omniauth_callbacks" => "devise/omniauth_callbacks", :confirmations => "devise/confirmations", :'users/sessions' => "sessions", :'devise/passwords' => "devise/passwords" ,
:'devise/registrations' => "users/registrations"}
app/views/devise/sessions/new.html.erb
<%= form_for(resource_name, :url => users_sign_in_path) do |f| %>
<div><%= f.label :email %>
<%= f.email_field :email %></div>
<div><%= f.label :password %>
<%= f.password_field :password %></div>
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end -%>
<div><%= f.submit "Sign in" %></div>
<% end %>
app/controllers/devise/sessions_controller.rb
class SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
prepend_before_filter :allow_params_authentication!, :only => :create
include Devise::Controllers::InternalHelpers
layout :false
def new
p 'in new sessions controller------------------'
resource = build_resource
clean_up_passwords(resource)
respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
end
def create
p "sessions create in sessions controller------
##tried to make many changes here using if else,but no result yet
p params
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
if !session[:return_to].blank?
redirect_to session[:return_to]
session[:return_to] = nil
else
respond_with resource, :location => after_sign_in_path_for(resource)
end
end
end
in devise.rb
config.authentication_keys = [ :email ]