簡體   English   中英

Node.js:在nodejs中注冊/登錄后嘗試重定向用戶

[英]Node.js: Trying to redirect a user after signing up/login in nodejs

我正在嘗試在用戶登錄/注冊后將用戶重定向到其節點中的個人資料頁面。 登錄/注冊系統運行良好,並且正在保存數據。 但是,當用戶在注冊或登錄后被重定向時,被重定向到的個人資料頁面路由無法吸引用戶。 我要去哪里錯了? 這是后端上的控制器。

 var _ = require('lodash'); var { User } = require('../models/user'); var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); var validation = require('./../middlewares/validate') var token; var jwt = require('jsonwebtoken'); var secret = "98ix0b84gs3r@&$#*np9bgkpfjeib1f9ipe"; var decodedToken, response, err; router.get("/users", function(req, res) { res.render('signup.hbs', { title: "New User Signup" }); }); router.get("/login", function(req, res) { res.render('login.hbs', { title: "New User Login" }); }); var authentication = (req, res, next) => { token = req.body.token || req.query.token || req.headers['x-access-token']; if (token) { jwt.verify(token, secret, function(err, decoded) { if (err) { return res.json({ success: false, message: 'Token authentication failed' }); } else { decodedToken = decoded; console.log("Token decoded", decodedToken); next(); } }) } } router.post('/submitLogin', validation.login, function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) { err = ("Something is wrong. Error= " + err); res.json(err); } else if (user === null || user === undefined || user.email === null || user.email === undefined) { err = ("Enter correct email"); res.json(err); } else if (!user.compareHash(req.body.password)) { err = ("Enter correct password"); res.json(err); } else { token = jwt.sign({ exp: Math.floor(Date.now() / 1000) + (60 * 60 * 60), id: user._id, email: user.email, username: user.username }, secret); response = { status: "Logged In", username: user.username, email: user.email }; response.token = token; //token pushed to response //res.json(response); res.redirect('http://localhost:8000/profile/me'); } }); }); router.post('/signup', validation.signup, function(req, res) { User.findOne({ email: req.body.email }, function(error, user) { if (error) { err = { error: error }; res.json(err); } else if (user) { err = { error: "Email exists" }; res.json(err); } else { var newUser = new User({ email: req.body.email, username: req.body.username, user_type: "basic", active: true }); newUser.password = newUser.generateHash(req.body.password); newUser.save((error) => { if (error) { response = ("Something was wrong" + error); res.json(response); } else { token = jwt.sign({ exp: Math.floor(Date.now() / 1000) + (60 * 60), id: newUser._id, email: newUser.email, username: newUser.username }, secret); response = { status: "Signed up", id: newUser.id, username: newUser.username, email: newUser.email }; response.token = token; //token pushed to response //res.json(response); res.redirect('http://localhost:8000/profile/me/' + response.id); } }); } }); }); router.get("/me/id", function(req, res) { User.findById({ _id: req.params.id }, function(err, user) { console.log(user); if (err) { res.send("Please login first"); } else { res.render('profile.hbs', { title: "New User Profile", username: user.username, email: user.email }); } }) }); module.exports = router; 

您將錯誤的路由信息​​提供給/me/id路由。

要提供動態路由參數,您需要在該變量之前添加: 更換路線

router.get("/me/id", ...

router.get("/me/:id", ...

您可以在此處閱讀有關快速路由的更多信息。

除此之外,您也沒有在登錄方法重定向中傳遞ID。 我不知道您是否為此設置了另一個路由,如果沒有,則還需要添加它。

暫無
暫無

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

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