2011-08-10 4 views
17

devise를 사용하는 3 레일 앱에서 사용자가 자신의 암호를 편집 할 수있는 링크를 제공하고 싶습니다. devise edit 암호 화면 표시

내가 가리키는 표준 링크가 :/사용자/암호/편집 ...

Started GET "https://stackoverflow.com/users/password/edit" for 127.0.0.1 at 2011-08-10 10:11:46 -0700 
    Processing by Devise::PasswordsController#edit as HTML 
    User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1 
Redirected to http://localhost:3000/ 
Completed 302 Found in 309ms 

아래 출력이 왜 레일 리디렉션됩니다셨습니까? 왜 암호 편집 페이지를 보여줄 수 없습니까? 감사합니다

+1

'routes.rb' 및'PasswordController'를 표시하십시오. – fl00r

+0

플래시 메시지에서 리디렉션이 된 이유는 무엇입니까? 사용자가 로그인하지 않았습니까? 예, 로그인하지 않고 암호를 편집하려고 시도하면 루트로 리디렉션됩니다. – numbers1311407

+0

@ numbers1311407 실제로 ** 사용자가 ** 로그인되어 있습니다.이 작업은 ** 로그인하지 않았고 ** 비밀번호를 잊어 버렸으며 이미 비밀번호 재설정 토큰을받은 사용자에게만 해당됩니다 **. –

답변

27

Devise::PasswordsController#edit은 재설정 토큰을 사용하여 비밀번호를 변경하려는 인증되지 않은 사용자를위한 것입니다. 이 재설정 토큰은 이전에 이메일로 사용자에게 전송되었습니다 (비밀번호 재설정 지침). 사용자가 이미 로그인 한 경우이 편집 암호 페이지는 인증 된 사용자가 액세스 할 수 없으므로 사후 로그인 경로로 항상 리디렉션됩니다.

로그인 후 사용자가 비밀번호 을 변경하도록 허용한다고 가정합니다. Devise::RegistrationsController#edit을 사용해야합니다.

+2

다른 사용자 프로필 정보에 대해 등록 컨트롤러에서 편집 작업을 사용하는 경우 어떻게됩니까? 사용자 프로필 정보 (이름, 주소 등) 및 비밀번호 업데이트 편집을 분리하고 싶습니다. – Batman

+0

@Batman https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit- 비밀 번호 –