2

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

我知道 Django 公开了这些路径

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 请求?

4

1 回答 1

-6

要使用 SessionAuthentication 使用 Django 内置的身份验证流程,您应该使用浏览器。见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

在手机应用程序中,您不必担心跨站点脚本,因此可以使用令牌身份验证并将令牌存储在手机上。

您仍然希望使用SessionAuthenticationDjango-Rest-Framework 的可浏览 api。请记住在生产中强制使用HttpOnlycookie 并禁用可浏览的 api。您可以稍后构建一个单页应用程序,该应用程序依赖于与移动应用程序相同的方法,但确保所有令牌都存储为安全 cookie。

对于 drf 中的重置密码流程,请尝试https://github.com/anx-ckreuzberger/django-rest-passwordreset

于 2018-09-28T20:10:15.160 回答