设计和STI,创建用户未登录

时间:2013-11-18 13:40:09

标签: ruby-on-rails-3 devise sti

有人可以告诉我为什么新创建的用户不会自动登录吗? (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'

2 个答案:

答案 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

此选项仅暂时可用于帮助迁移。