如何使用Django Rest Framework SessionAuthentication重置密码

时间:2018-09-28 00:41:21

标签: curl django-rest-framework session-cookies httpie

我正在为移动应用程序构建一个api。移动客户端完全支持cookie,因此我想使用SessionAuthentication。遵循Django rest framework tutorial之后,您将如何配置api并与之交互以重置用户密码?

我知道Django公开了these paths

accounts/login/ [name='login']
accounts/logout/ [name='logout']
accounts/password_change/ [name='password_change']
accounts/password_change/done/ [name='password_change_done']
accounts/password_reset/ [name='password_reset']
accounts/password_reset/done/ [name='password_reset_done']
accounts/reset/<uidb64>/<token>/ [name='password_reset_confirm']
accounts/reset/done/ [name='password_reset_complete']

请注意,我不使用BasicAuthentication,而是使用SessionAuthentication。移动客户端应该发出什么http请求?

1 个答案:

答案 0 :(得分:0)

要使用SessionAuthentication使用Django内置的Auth流,您应该使用浏览器。参见Warning: Always use Django's standard login view when creating login pages. This will ensure your login views are properly protected. http://www.django-rest-framework.org/api-guide/authentication/#sessionauthentication

在电话应用中,您不必担心跨站点脚本编写,因此可以使用令牌身份验证并将令牌存储在电话中。

您仍然需要对Django-Rest-Framework的可浏览api使用SessionAuthentication。请记住在生产过程中强制使用HttpOnly cookie并禁用可浏览的api。您以后可以构建与移动应用程序相同方法的单页应用程序,但要确保所有令牌都存储为安全cookie。

要在drf中重置密码,请尝试https://github.com/anx-ckreuzberger/django-rest-passwordreset