繁体   English   中英

在Rails中设计电子邮件确认后如何登录用户

[英]How to sign_in user after devise email confirmation in Rails

我试图在过去7小时内在确认电子邮件后自动登录用户,但是当我单击确认链接时,它会显示“您的电子邮件地址已成功确认”。 但不登录用户。 我已经在确认控制器和路线中编写了此代码

devise_for :users, controllers: {confirmations: 'users/confirmations'}

class ConfirmationsController < Devise::ConfirmationsController
  #private
  def after_confirmation_path_for(resource_name, resource)
    sign_in(resource)
    render plain: "here"
    redirect_to "/admins/view_account", notice: "User deleted."
  end
end

任何帮助将不胜感激谢谢。

请注意,电子邮件确认后自动登录曾经是Devise的默认行为,但由于安全措施而被更改(在3.1之后),您可以在此处此处看到更多信息

如果仍要执行此操作,请根据Devise的版本,确保在项目内的config/initializers/devise.rb文件中设置以下行:

config.allow_insecure_sign_in_after_confirmation=true

如果您使用的是最新的Devise版本,则可能需要替代,使用app/controllers/users/confirmations_controller.rb上的此代码扩展默认控制器,以代替上面提到的控制器代码( 请注意名称空间)和提到的路径 ):

class Users::ConfirmationsController < Devise::ConfirmationsController
  def show
    super do |resource|
      sign_in(resource) if resource.errors.empty?
    end
  end
end

并确保您在问题开头粘贴的代码属于config/routes.rb

devise_for :users, controllers: { confirmations: 'users/confirmations' }

希望能帮助到你!

我自己解决了。

路线应该是这样的

 devise_for :users, controllers: {confirmations: 'confirmations'} do
    #put "confirm_user", to: "confirmations#confirm_user"
    get "confirmation", to: "confirmations#after_confirmation_path_for"
  end

控制器就是这样

class ConfirmationsController < Devise::ConfirmationsController
  #private
   def after_confirmation_path_for(resource_name, resource)
    sign_in(resource)
    #render plain: "here"
    #redirect_to "/admins/"
   end

  def show
    self.resource = resource_class.confirm_by_token(params[:confirmation_token])

    if resource.errors.empty?
      set_flash_message(:notice, :confirmed) if is_flashing_format?
      sign_in(resource) # <= THIS LINE ADDED
      redirect_to "/your path/"
    else
      respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
    end
  end


end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM