비밀번호 변경 후 자동으로 로그 아웃하도록 고안
Devise에서 사용자의 비밀번호를 변경하고 db에 업데이트 된 후 사이트는 즉시 사용자를 로그 아웃합니다. 이 행동을 원하지 않습니다. 어떻게해야합니까? 도와주세요.
나는 같은 문제가 있었고 다음 코드가 나를 위해 작동하는 것 같습니다.
암호 컨트롤러가 단일 경로로 설정되었다고 가정합니다. 또한 인증 된 모델이 계정이라고 가정합니다. 이를 통해 다음이 가능합니다.
def update
if current_account.update_with_password(params[:account])
sign_in(current_account, :bypass => true)
flash[:notice] = 'Password updated.'
redirect_to account_path
else
render :action => :show
end
end
핵심 요소는 계정에 다시 로그인을 시도하지만 워든 콜백을 우회하고 계정을 세션에 저장하는 sign_in 메서드 호출입니다.
위의 예는 Devise에서 여러 범위를 사용하는 경우 작동하지 않았습니다.
작동하려면 sign_in 경로에 범위 / 리소스 이름을 추가해야했고 혼돈을 방지하기 위해 이전 사용자를 로그 아웃해야했습니다. 그렇지 않으면 모든 종류의 혼란이 가득 할 것입니다.
위의 예를 사용하여 변경해야하는 변경 사항은 다음과 같습니다.
def update
if current_account.update_with_password(params[:account])
sign_out(current_account)
sign_in(:account, current_account, :bypass => true)
flash[:notice] = 'Password updated.'
redirect_to account_path
else
render :action => :show
end
end
추가 편집 : 특정 작업 중에 사용자가 로그 아웃하지 않도록 Devise의 코드를 어딘가에서 덮어 썼기 때문에 사용자를 강제로 로그 아웃해야한다고 생각합니다. 돌이켜 보면; 좋은 생각이 아닙니다! 이 접근 방식이 훨씬 좋습니다! 절대적으로 피할 수없는 경우가 아니면 Devise의 코드를 재정의하는 것보다 자체 컨트롤러를 만드는 것이 더 안전합니다.
로그 아웃을 방지하려면이 코드를 사용하세요.
sign_in(current_user, :bypass => true)
당신은 간단하게 설정할 수 있습니다 sign_in_after_reset_password
에devise.rb
config.sign_in_after_reset_password = true
데이터베이스에서 사용자 암호를 업데이트 한 직후에 사용자 암호를 업데이트하는 메서드에 다음 코드를 추가합니다.
def update
. . . . .<your code>
. . . . .<your code>
sign_in(@user, :bypass => true)
. . . . .<your code>
. . . . .<your code>
end
몇 가지 이유를 들어, current_user
동일하지 @user
않지만 current_user.id
IS가 동일 @user.id
. 그래서 나는 sign_in(@user, :bypass => true)
.
위의 Bill Eisenhauer 답변 업데이트-
sign_in(current_account, :bypass => true)
bypass_sign_in current_account
대신 사용이 중단되었습니다.
자세한 내용은 http://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/SignInOut#bypass_sign_in-instance_method 에서 확인할 수 있습니다 .
등록 가능한 모듈을 사용하면 등록 및 사용자 기능 편집이 모두 제공됩니다.
https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-password
참고 URL : https://stackoverflow.com/questions/4264750/devise-logging-out-automatically-after-password-change
'Nice programing' 카테고리의 다른 글
Xcode에 코드 자동 서식 기능이 있습니까? (0) | 2020.10.23 |
---|---|
ReaderWriterLockSlim이 단순 잠금보다 나은 때는 언제입니까? (0) | 2020.10.23 |
튜플에 값을 추가하는 방법? (0) | 2020.10.23 |
엔티티 프레임 워크가 조인을 남겼습니다. (0) | 2020.10.23 |
R에서 밀도 플롯을 오버레이하는 방법은 무엇입니까? (0) | 2020.10.23 |