2016-06-05 4 views
1

django로 프로필 페이지를 만들었습니다. 사용자가 내가 입력 한 정보를 변경하도록했습니다. (예 : 이름, 이메일, 비밀번호)django로 프로필 페이지 만들기

나는 암호 필드에 두 문제가 :

1 - 사용자가 텍스트 필드에 암호를 삽입 할 때, 그것은 원시 형식으로 제출, 나는 사용자의 테이블 형식 장고해야 할 것

<algorithm>$<iterations>$<salt>$<hash> 

의 프로필 페이지 내보기 : 당신이 의견에서 볼 수 있듯이, 내가 암호를 해시 make_password 기능을 사용

def user_profile(request): 
    current_user = request.user 
    form = UserProfileForm(request.POST or None, instance=current_user) 
    if request.POST: 
     if form.is_valid(): 
      # pwd = form.cleaned_data['password'] 
      # form_obj = form.save(commit=False) 
      # form_obj.password = make_password(pwd) 
      form.save() 
      message = "saved successfully" 
      return render(request, 'Profile.html', {'form':form, 'message':message}, context_instance=RequestContext(request)) 

    return render_to_response('Profile.html', { 
     'form': form, 
    }, context_instance=RequestContext(request)) 

하고 그것을 잘하지만 subm 후 작동 itting 페이지, 사용자가 다른 페이지로 갈 수 없어 다시 로그인해야 ... 왜?!

2 - 프로필 페이지가 사용자에게 표시 될 때 데이터베이스의 현재 정보로 채워지고 비밀번호는 위의 형식 (해시) 이며 사용자가 비밀번호 입력란을 변경하지 않고 양식을 제출하면 비밀번호 변경되었습니다 (해시를 보내고 다시 해시합니다.)

어떻게이 문제를 해결하고 장고에서 간단한 작업 프로필 페이지를 만들 수 있습니까? (정말 자신의 관리자 패널을 좋아하지 않는 것이 좋은 보이지 않는다!!)

답변

2

를 문서에서 :

SessionAuthenticationMiddleware이 활성화 된 경우 사용자의 암호가 모든 세션을 로그 아웃합니다 변경. 기본적으로하지 않은, 당신이 passwordInput로 필드를 설정해야합니다

그래서 당신은 암호 필드 사전이 채워 인에 관한 https://docs.djangoproject.com/en/1.9/topics/auth/default/#session-invalidation-on-password-change

자세한 정보를 위해 update_session_auth_hash(request, user)

을 사용해야합니다 미리 입력 됨, 참조 : https://docs.djangoproject.com/en/1.9/ref/forms/widgets/#django.forms.PasswordInput

+0

작동합니다! 덕분에 많이 그리고 두 번째 문제는 어떨까요? – Amir

+0

이 경우 사용자는 매번 자신의 비밀번호를 입력해야합니다. (비밀번호를 비워두면 오류가 발생하고 제출하기 만하면 비밀번호가 오랫동안 변경됩니다!) – Amir

+0

마지막 부분에서 두 번째 문제에 대해 이야기합니다. 내 대답은 기본적으로 양식을 수정해야합니다 ... – mastazi