【发布时间】:2019-05-20 02:39:57
【问题描述】:
我想添加一项功能,该功能将使用过期密码的用户重定向到重置密码页面。 我的控制器是这样的
class Users::SessionsController < Devise::SessionsController
def create
user = User.find_by(email: params[:user][:email].downcase)
if user.password_expire?
raw, enc = Devise.token_generator.generate(current_user.class,
:reset_password_token)
user.reset_password_token = enc
user.reset_password_sent_at = Time.now.utc
user.save(validate: false)
redirect_to edit_password_url(user, reset_password_token: raw)
else
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in)
sign_in(resource_name, resource)
yield resource if block_given?
respond_with resource, location: after_sign_in_path_for(resource)
end
end
end
当我在操作顶部使用 binding.pry 进行调试时,我发现 current_user 存在并且 user_signed_in?是真的。我怎么可能在 create 方法完成之前登录?
【问题讨论】:
标签: ruby-on-rails devise passwords