我有一条快速路由,在nodemailer向用户发送确认电子邮件后,它被点击。
router.route('/confirmation/:token').get((req, res, next) => {
try {
Token.findOne({ token: req.params.token }, function(err, token) {
if (err)
return res.status(404).send({
type: 'not-verified',
msg: 'We were unable to find a valid token. Your token my have expired.'
});
// If we found a token, find a matching user
User.findOne({ _id: token._userId, email: req.body.username }, function(err, user) {
if (err)
return res
.status(404)
.send({ msg: 'We were unable to find a user for this token.' });
if (user.isVerified)
return res.status(400).send({
type: 'already-verified',
msg: 'This user has already been verified.'
});
// Verify and save the user
user.isVerified = true;
user.save(function(err) {
if (err) {
return res.status(500).send({ msg: err.message });
}
return res
.status(200)
.send({
msg: [
'The account has been verified. Please log in.',
{ userVerified: user.isVerified }
]
})
.redirect('/login');
});
});
});
} catch (err) {
return next(err);
}
});
电子邮件:
[您好,请通过单击链接验证您的帐户:http://localhost:8016/users/confirmation/a217ba992e977079eeeca541677fedcb
自然地,期望我将我带到:http://localhost:8016/users/confirmation/a217ba992e977079eeeca541677fedcb
并作为回应:
{
"msg": [
"The account has been verified. Please log in.",
{
"userVerified": true
}
]
}
但是我想要通过React路由器使用此数据。要使用模式或其他组件,请使用它。从本质上来说,获取这些数据可以为我在客户端上的路线加油。
类似:
function PrivateRoute({ children, ...rest }) {
return (
<Route
{...rest}
render={({ location, props }) =>
isLoggedIn ? (
children
) : (
<Redirect
to={{
pathname: '/',
state: { from: location }
}}
/>
)
}
/>
);
}
<PrivateRoute path={`/users/confirmation/${params.token}`}>
{
<Modal
isAlertModal={false}
history={history}
affirmativeUsed="Yes"
message="You have now completed your registration!"
modalActive={true}
/>
}
</PrivateRoute>
提前感谢!
并非如此。在您的React组件之一中点击/ confirmation端点,然后将结果存储在Redux存储中。然后,将需要访问该令牌的任何React组件连接到Redux存储。