首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Django Rest框架和Dj-rest-auth在React中显示重置密码页面

如何使用Django Rest框架和Dj-rest-auth在React中显示重置密码页面
EN

Stack Overflow用户
提问于 2021-10-31 13:03:30
回答 1查看 158关注 0票数 0

我有一个应用程序,有一个反应前端和Django api后端。我正在尝试让密码重置页面工作,但我不知道如何设置urls/路由。我让它在本地工作,但我认为这是因为前端和后端的端口在本地是不同的,所以它们本质上是不同的域。

我的Django url模式包括:

代码语言:javascript
复制
path('api/v1/dj-rest-auth/password/reset/confirm/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm')

我在我的Django url中有一个通用的url,用来让前端的其余部分正常工作。

我的React路由器包括:

代码语言:javascript
复制
<Route path="/api/v1/dj-rest-auth/password/reset/confirm/:uid/:token/" component={ResetPassword} />

我的React密码重置页面包含:

代码语言:javascript
复制
    let url = process.env.REACT_APP_API_PATH + '/api/v1/dj-rest-auth/password/reset/confirm/' + this.props.match.params.uid + '/' +  this.props.match.params.token + '/';
    let headers = {token: this.props.match.params.token, 
                    uid: this.props.match.params.uid, 
                    new_password1: this.state.newPassword, 
                    new_password2: this.state.newPasswordConf
                  }
    axios
      .post(url, headers)

这将从密码重置链接获取令牌和uid,然后将它们与用户的新密码一起发送到密码重置端点。

难题似乎是,我需要通过React访问重置链接才能获得令牌和uid,但随后我需要访问与API调用相同的链接才能重置密码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-31 15:51:31

好吧,我设法用一种稍微厚颜无耻的方式解决了这个问题。

我只是简单地重写了密码重置电子邮件的模板,使用了默认模板,但只是在url中添加了一些额外的东西。只是为了让url在某些方面有所不同。

我已将this模板复制到templates/registration

然后只需在电子邮件中创建的路径中添加一个额外的单词(email -但可以是任何单词):

代码语言:javascript
复制
{{ protocol }}://{{ domain }}/email{% url 'password_reset_confirm' uidb64=uid token=token %}

现在我可以在我的React Router中使用这个新路径来获取uid和token,但是当我将数据提交给api时,我使用了‘正确’的url (在我的Django urlpattern中)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69787128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档