使用 Django-rest-framework 和 reactjs 在 Live Server 上:在这里我发送邮件忘记密码,我收到邮件但是当我点击密码重置链接时它没有重定向到密码重置页面。
但是当我使用本地主机时,它工作正常,它正在重定向到密码重置页面。
代码: 应用程序.js
import React from 'react'
import "./App.css";
import {BrowserRouter as Router, Routes, Route, Navigate } from "react-router-dom"
import Home from "./Home"
import LoginReg from './pages/auth/LoginReg';
import SendPasswordResetEmail from './pages/auth/SendPasswordResetEmail';
import ResetPassword from './pages/auth/ResetPassword';
const App = () => {
const {access_token} = useSelector(state => state.auth )
return (
<div >
<Router>
<Routes>
<Route exact path = "/">
<Route index element = {<Home/>}/>
</Route>
{/* Login and registration path for Admin/User credential */}
<Route exact path = "/" element = {<Layout/>} >
<Route path = "loginreg" element = {
access_token ? <Navigate to = '/dashboard' />: <LoginReg />} />
<Route path = "sendpasswordresetemail" element = {<SendPasswordResetEmail/>} />
<Route path = "api/user/reset/:id/:token" element = {<ResetPassword/>} />
<Route path = "passwordchange" element = {<ChangePassword />} />
</Route>
<Route path="*" element={<Navigate to="/" />} />
</Routes>
</Router>
</div>
)
}
Serializer.py
class SendPasswordResetEmailSerializer(serializers.Serializer):
email = serializers.EmailField(max_length=255)
class Meta:
fields = ['email']
def validate(self, attrs):
print("attrs:",attrs)
email = attrs.get('email')
print("email:", email)
if User.objects.filter(email=email).exists():
user = User.objects.get(email = email)
print("User:",user)
# encode karenge user id ko or
uid = urlsafe_base64_encode(force_bytes(user.id))
print('Encoded UID', uid)
token = PasswordResetTokenGenerator().make_token(user)
print('Password Reset Token', token)
link = 'http://localhost:3000/api/user/reset/'+uid+'/'+str(token)
print('Password Reset Link', link)
# Send EMail
body = 'Click Following Link to Reset Your Password Local '+link
data = {
'subject':'Reset Your Password',
'body':body,
'to_email': user.email
}
print("Data:", data)
Util.send_email(data)
return attrs
raise serializers.ValidationError('You are not a Registered User')`