簡體   English   中英

如何使用 Django Rest Framework 和 Dj-rest-auth 在 React 中顯示我的重置密碼頁面

[英]How to show my reset password page in React using Django Rest Framework and Dj-rest-auth

我有一個應用程序,它有一個 React 前端和一個 Django api 后端。 我正在嘗試讓密碼重置頁面正常工作,但我不知道如何設置 URL/路由。 我讓它在本地工作,但我認為這是因為前端和后端的端口在本地不同,所以它們本質上是不同的域。

我的 Django 網址模式包括:

path('api/v1/dj-rest-auth/password/reset/confirm/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm')

我的 Django urls 中有一個包羅萬象的 url,以使前端的其余部分工作。

我的 React 路由器包括:

<Route path="/api/v1/dj-rest-auth/password/reset/confirm/:uid/:token/" component={ResetPassword} />

我的 React 密碼重置頁面包含:

    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 相同的鏈接才能重置密碼。

好的,我設法用一種有點厚顏無恥的方式解決了它。

我只是使用默認模板覆蓋了密碼重置電子郵件的模板,但只是在 url 中添加了一些額外的東西。 只是網址在某些方面有所不同。

將此模板復制到templates/registration

然后在電子郵件中創建的路徑中添加一個額外的詞( email - 但可以是任何詞):

{{ protocol }}://{{ domain }}/email{% url 'password_reset_confirm' uidb64=uid token=token %}

現在我可以在我的 React 路由器中使用這個新路徑來獲取 uid 和令牌,但是當我將數據提交到 api 時,我使用了“正確”的 url(我的 Django urlpatterns 中的那個)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM