注册后立即禁用用户自动登录

时间:2013-06-28 16:25:32

标签: ruby-on-rails ruby devise

我使用Devise gem。它未配置为:confirmable,但我希望用户在注册过程后不会自动登录。出于某种原因,现在他们自动登录,这与我想要的完全相反。

那我该怎么做?

2 个答案:

答案 0 :(得分:2)

https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-(registration)

基本上,请按照上述步骤操作。在after_sign_up_path_for方法中,您可以调用

sign_out resource

然后将它们重定向到您希望他们去的任何页面(可能是root或登录页面)。

用户通过devise调用的sign_up方法登录;这是标准程序 - 许多网站在用户注册后立即登录。大多数不需要先确认,所以你的用例有点不典型。尽管如此,按照上面描述的方法做你想做的事情,而不必实施确认或做任何会员资格批准。

答案 1 :(得分:1)

通过sign_up操作调用Devise::RegistrationsController中的[create][1]方法,即可在注册后注册用户。您可以简单地使用空方法覆盖此方法以防止登录。这对我有用!

app/controllers/users/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController

   def sign_up(resource_name, resource)
   end
end

注意:将users替换为您的表名。

<强>附加

如果您只允许管理员添加新用户或其他管理员,并使用创建操作添加它们,则此前一种方法还将为您提供无需注销的好处。您可以通过覆盖after_sign_up_path_for中的app/controllers/application_controller.rb方法来自定义注册后要重定向到的页面:

class ApplicationController < ActionController::Base
    def after_sign_up_path_for(user)
        '/users/show' # replace with the path you want
    end