2012-01-12 5 views
3

has_secure_password 메소드를 사용하고 있는데 어떻게 암호 형식과 컨트롤러 동작을 변경합니까? 나는 것처럼 보일 생각합니다 : 난 아직도 표준 방법에 의해 이것을 '올바른'을 수행하는 방법을 잘 모르겠어요비밀번호 변경 양식은 어떻게 작성합니까?

<%= form_for @parent, :url => update_password_path(@parent) do |f| %> 
<%= f.label :old_password %><br /> 
<%= f.text_field :old_password %><br /> 
<%= f.label :new_password %><br /> 
<%= f.text_field :password %><br /> 
<%= f.label :password_confirmation %><br /> 
<%= f.text_field :password_confirmation %><br /> 
<%= f.submit %> 
<% end %> 

답변

0

하지만, 그래, 당신은 그런 양식을 원하는 것입니다. 이전 암호가

user = User.find(session[:user_id]) if session[:user_id] 
if user and user.authenticate(params[:old_password]) 
    if params[:password] == params[:password_confirmation] 
     user.password_confirmation = BCrypt::Password.create(params[:password]) 
     respond_to do |format| 
      format.html # reset_password_success.html.erb 
     end 
    else 
     redirect_to reset_password_url, notice: "Incorrect Password." 
    end 
else 
    redirect_to reset_password_url, notice: "Incorrect Password." 
end 

당신이 그들이 때 새 사용자 등록을 필터링하고처럼 암호를 필터링해야합니다 수행하여 유효한 경우 컨트롤러 액션 확인합니다.

양식이 작동하는지 여부는 확실하지 않습니다. 나는 옳은 방법으로 양식을 만들거나 서둘러 양식을 붙이면 보통의 오래된 HTML을 사용하여 그것을 해킹하거나 버팀목으로 사용한다는 것을 알게되었습니다. 시간 제약과 과거 경험을 토대로 결정하십시오.

양식이 올바르게 작동하지만 요청을 처리하는 동안 오류가 발생하면 params [: old_password] 등을 사용하여 실제로 매개 변수에 액세스해야합니다. params [: user] [: old_password]와 같은 다른 params 객체 안에 중첩 될 수 있습니다. 레일 콘솔을 보거나 로그를보고 매개 변수가 전송되는 방법을 확인할 수 있습니다. 이것은에게 Heroku에서 호스팅되는 경우, 당신은 로그의에 대한 Heroku가 요청해야합니다 =>https://devcenter.heroku.com/articles/logging 그리고 당신은 또한

교통 네트워크 듣고 (피들러 =>http://www.fiddler2.com/fiddler2/을 주요 브라우저에 개발 도구 또는 사용)하여 알아낼 수 이 코드는 Agile Web Development with Rails (4th ed.) 책에서 벗어나고 있다고 가정합니다. 그렇지 않은 경우 일부 조정이 이루어져야합니다.

관련 문제