我使用设计宝石。它没有配置为:confirmable
,但是我希望用户不要在注册过程后立即自动登录。出于某种原因,现在他们会自动登录,这与我想要的完全相反。
那么我该怎么做呢?
我使用设计宝石。它没有配置为:confirmable
,但是我希望用户不要在注册过程后立即自动登录。出于某种原因,现在他们会自动登录,这与我想要的完全相反。
那么我该怎么做呢?
基本上,按照上面的步骤。在您的 after_sign_up_path_for 方法中,您可以调用
sign_out resource
然后将它们重定向到您希望它们访问的任何页面(可能是 root 或登录页面)。
用户通过devise调用的sign_up方法登录;这是标准程序——许多网站在用户注册后立即登录。大多数不需要先确认,所以你的用例有点不典型。尽管如此,执行我上面描述的方法应该可以完成您想要的操作,而无需实施可确认或进行任何会员批准。
注册后的用户登录是通过操作调用的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
为您的表名。
额外的:
如果您只允许管理员添加新用户,或者可能是其他管理员,并使用 create 操作来添加它们,那么之前的方法也将给您带来不必退出的好处。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