Javascript 如何使用令牌注册器(MERN-)通过邮件激活帐户?
当用户创建一个帐户时,他通过电子邮件接收到一个链接,该链接的末尾有一个令牌。我如何提取该代币,然后启动帐户? 或者是否有其他方法使用注册令牌验证帐户Javascript 如何使用令牌注册器(MERN-)通过邮件激活帐户?,javascript,node.js,reactjs,mongodb,Javascript,Node.js,Reactjs,Mongodb,当用户创建一个帐户时,他通过电子邮件接收到一个链接,该链接的末尾有一个令牌。我如何提取该代币,然后启动帐户? 或者是否有其他方法使用注册令牌验证帐户 function ActivationEmail() { const {ActToken} = useParams(); useEffect(() => { if(ActToken){ const activationEmail = async () => {
function ActivationEmail() {
const {ActToken} = useParams();
useEffect(() => {
if(ActToken){
const activationEmail = async () => {
try {
await axios.get('/api/users/verificare?validation=', {ActToken})
} catch (err) {
}
}
activationEmail()
}
},[ActToken])
路线:
<Route path="/verification?t=:ActToken" component={ActivationEmail} />
useparms
钩子用于获取URL参数,而不是查询参数(查询参数位于?
字符之后)
使用以下代码获取令牌
const queryParams = new URLSearchParams(window.location.search)
const token= queryParams.get('t')
也要做一些代码结构更改,如下所示
const activationEmail = async (token) => {
try {
await axios.get(`/api/users/verificare?validation=${token}`)
}
catch (err) {
console.error(err);
}
}
function ActivationEmail() {
const queryParams = new URLSearchParams(window.location.search)
const ActToken = queryParams.get('t');
useEffect(() => {
if(ActToken){
activationEmail(ActToken)
}
},[])
// Return your component DOM here
}
还要更新路由路径(在定义路由路径时,我们不需要提及查询参数)
我将const queryParams=new URLSearchParams(window.location.search)const ActToken=queryParams.get('t')放在ActivationEmail中,但它也不起作用,我在所有地方都有ActToken的控制台日志,而且它永远不会显示。尝试将路由路径更改为“/验证”。删除部分“t:ActToken”。我在->等待axios.get(/api/users/VerificationCare?validation=${ActToken}
)中修改了它,现在它可以工作了,但当我两次单击链接中的按钮->重定向和必须进入此链接时(从邮件重定向时和我需要转到链接->单击他->输入,现在是真的)我不能完全理解你在前面的评论中所说的话。你是说“你需要点击链接两次才能让它工作”吗?
const activationEmail = async (token) => {
try {
await axios.get(`/api/users/verificare?validation=${token}`)
}
catch (err) {
console.error(err);
}
}
function ActivationEmail() {
const queryParams = new URLSearchParams(window.location.search)
const ActToken = queryParams.get('t');
useEffect(() => {
if(ActToken){
activationEmail(ActToken)
}
},[])
// Return your component DOM here
}
<Route path="/verification" component={ActivationEmail} />