加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何绕过使用Devise和更新进行重新登录

发布时间:2020-12-17 03:38:35 所属栏目:百科 来源:网络整理
导读:标题有点令人困惑所以我会解释. 我有以下控制器方法: def password_update @op = params[:old_password] @np = params[:new_password] @cp = params[:confirm_password] if @np == @cp if !@np.empty? if current_user.update_with_password(:current_passw
标题有点令人困惑所以我会解释.
我有以下控制器方法:

def password_update
      @op = params[:old_password]
      @np = params[:new_password]
      @cp = params[:confirm_password]

      if @np == @cp
        if !@np.empty?
          if current_user.update_with_password(:current_password=> @op)
              current_user.password = @np
              if current_user.save
                flash[:notice] = "Password Successfully Changed"
                redirect_to settings_path and return 
              end 
          else
            flash[:notice] = "Incorrent Current Password"
            redirect_to change_password_path and return 
          end
        else
          flash[:notice] = "New Password Cannot Be Blank"
        end   
      elsel
        flash[:notice] = "Incorrect Password Confirmation"
      end
      redirect_to change_password_path
    end

其他所有工作都很好,这意味着我有工作路线和视图,可以引导您使用此方法并在表单提交时调用它.但是,当我尝试正确更改密码时,会出现错误.顺便说一下,我正在使用Devise.当我点击提交时,我会退出并显示“您必须登录才能完成此操作”.所以我尝试登录,我当前的密码不起作用.它已经改变了我的密码(我在表格中设置的密码)!它告诉我,我必须登录(当我尝试更改密码时,我就是这样),但它仍然会更改它.

欢迎任何帮助,但是,我是一个新手,非常感谢详细的解释.谢谢!

解决方法

我相信Devise wiki中的这个页面回答了你的问题: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-password

特别是这段代码

if @user.update_attributes(params[:user])
   # Sign in the user by passing validation in case his password changed
   sign_in @user,:bypass => true
   redirect_to root_path
 else
   render "edit"
 end

旁路选项似乎也很好.希望这可以帮助.干杯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读