有人可以告诉我为什么新创建的用户不会自动登录吗? (Rails 3.2.2,Devise 3.2.1)
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
# attr_accessible :title, :body
end
admin.rb
class Admin < User
end
index.html.erb
<%= form_for(Admin.new, :as => :admin, :url => registration_path(:admin)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
的routes.rb
resources :welcome
resources :dashboard
devise_for :users, :skip => :registrations
devise_for :admins, :skip => :sessions
devise_for :users, :controller => {:sessions => 'sessions'}, :skip => [:sessions] do
delete '/logout', :to => 'sessions#destroy', :as => :destroy_user_session
get '/login', :to => 'sessions#new', :as => :new_user_session
post '/login', :to => 'sessions#create', :as => :user_session
end
authenticated :user do
root :to => "dashboard#index"
end
root :to => 'welcome#index'
答案 0 :(得分:1)
这一切都随着Devise 3.1而改变。来自blog post:
设计3.1不再在确认后自动签署用户
您当然可以使用sign_in(user)
手动执行此操作。看Rails Devise gem automatic login。
答案 1 :(得分:0)
出于安全目的,
设计3.1不再在注册后自动登录用户=&gt; http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/
您可以在升级后通过在config / initializers / devise.rb中设置以下内容来暂时恢复旧行为:
config.allow_insecure_sign_in_after_confirmation = true
此选项仅暂时可用于帮助迁移。