2016-11-17 1 views
0

나는 인증 용 devise gem을 사용했습니다. 여러 명의 사용자가 있으며 관리자입니다. 다른 사용자의 암호를 변경하고 싶습니다. 그렇게 할 수 있습니까?devise gem을 사용하여 다른 사용자의 비밀번호 변경

+1

rails 콘솔의 update 메소드를 사용할 수 있습니다. 'User.find (user_id) .update_attributes (password : "password")' –

+0

나는 이것을 시도했지만 사용자 테이블에는 password라는 이름의 컬럼이 없다. –

+0

사용자가 입력 한 암호는 Devise에 의해 암호화되고 암호화 된 값이 저장됩니다. 암호는 데이터베이스에 액세스 할 수있는 사람에게 값을 노출하므로 직접 저장하면 안됩니다. –

답변

2

나는 더 나은 방법을 생각할 수는 없지만 양식 필드에 입력 한 새 암호를 전달하고 다음을 수행하는 작업을 구현할 수 있습니다. 아래의 코드는뿐만 아니라 레일 콘솔에서 작동합니다 (장치 4.2.0 테스트)

u = User.find(user_id) 
u.password = "changed_password" 
u.save 

편집 :. 내가 강력하게이 일을 다시 생각하는 것이 좋습니다 것입니다. 기존 사용자는 어떻게 자신의 암호가 무엇인지 알 것입니다. 대안 - 사용자가 잊어 버린 비밀번호 방법을 사용하고 비밀번호를 직접 설정할 수 있도록 메커니즘을 구축 할 수도 있습니다. 이렇게하려면 encrypted_password를 null로 설정하고 비밀번호를 잊어 버린 전자 메일을 보내면 (현재 암호가 만료되었고 새 암호를 설정해야하는 메일에 적절한 메시지가 있음) 암호를 사용하여 암호를 직접 설정할 수 있습니다.

+0

기밀 데이터가 있으며 사용자에게 사용자 이름과 암호를 제공하고 싶습니다. 누군가가 내 데이터를 공개 할 것으로 생각되면 암호를 변경할 수 있습니다. –

+2

'password_confirmation'은'password'만으로는 할 필요가 없습니다. –

관련 문제