3

我们的团队使用后端的django-rest-api和前端的angular-2来处理项目。我们有密码重置问题。这里的网址:使用Rest API的Django密码休息

from django.contrib.auth import views as auth_views 
urlpatterns = patterns(
'', 
url(r'^password_reset/$', auth_views.password_reset, name='password_reset'), 

url(r'^password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'), 

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',auth_views.password_reset_confirm, name='password_reset_confirm'), 

url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'), 
) 

当请求password_reset张贴,用户将收到链接的电子邮件中包含密码重置令牌。 令牌在24小时内应该有到期时间。

想要使密码重置API,所以我们可以使用邮递员更改密码,也可以使用前端开发人员使用此API。

+0

太大。你必须维护一个表格,然后你必须有一个视图来处理发送密码重置的邮件。 –

回答

3

您可以遵循以下基本步骤 -

1) UI - Press reset password 
2) UI - Type Email Id for verify (token will go to this ID) 
    a) Backend - Get email and verify/authenticate it 
    b) Generate a token [ you can use from drive.utils import 
     get_random_number ] 
      1) Save in DB - Token code, Email , Date(+1 day) 
    c) Send Email with Token 
    d) render to new html with email id 
    return render(request, 'forgot_password.html', {'email': email})  
3) UI - GET token code from user (pass email (from above) along with 
    code) 
    a) verify code and check if its expire (current date < code date) 
    b) if verified render to change password page (pass email) 
4) UI - GET New Password from user (email from above) 
    a) change password 
+0

嗨@Vicamathur我跟着,每一步,但现在卡住在“品脱4)a)更改密码”你能告诉我如何我可以更改用户的密码,如果我有users_email和新密码,我想为用户。 –

+1

在django中你必须使用set_password()函数来为Auth用户设置密码,你不能这样做user.password =“new password”,你必须使用user.set_password(“new password”)比你必须做的用户。 save()和user = User.objects.get(email = user_email) – Vaibhav

+0

是的,我们需要一个来自auth.models类的User对象。有效。谢谢 –