我正在制作非常简单的用户登录系统。每个用户都有自己的页面(username.html)。一旦用户登录系统,他们就应该获得自己的页面。在这里,我使用了passportjs,我的代码是
var express = require('express');
var router = express.Router();
var isAuthenticated = function (req, res, next) {
// request and response objects
if (req.isAuthenticated())
return next();
// not authenticated then redirect to the login page
res.redirect('/');
}
router.post('/login',
passport.authenticate('login', {failureRedirect: '/'}),
function(req, res) {
// If this function gets called, authentication was successful.
res.redirect(req.user.username);
});
/* GET user Page */
router.get('/user.username', isAuthenticated, function(req, res){
res.render('user.username', { user: req.user });
我坚持获取用户页面。你有什么建议我得到' /user.username' router.get
中的页面?非常感谢你的帮助。
答案 0 :(得分:3)
您尝试将参数传递到快速获取路线时存在问题。
必须在:
之后指定要接收的查询参数。例如,
app.get('/api/:version', function(req, res) {
res.send(req.params.version);
});
此代码段会识别/api/1
,/api/2
等路线。此处version
是要接收的参数。可以使用req.param
来访问参数的值。
所以在这里,我们需要在成功登录后将用户重定向到他的页面。这可以通过创建"/:username"
的路由来完成,该路由将接受username
作为参数并呈现用户&#39 ;页面。
现在,例如如果用户以'aarav'
身份登录,那么他将被重定向到\aarav
,这将由get路由处理,从而呈现其值由req.params.username
给出的适当页面。
以下是修改后的代码:
var express = require('express');
var router = express.Router();
var isAuthenticated = function (req, res, next) {
// request and response objects
if (req.isAuthenticated())
return next();
// not authenticated then redirect to the login page
res.redirect('/');
}
router.post('/login',
passport.authenticate('login', {failureRedirect: '/'}),
function(req, res) {
// If this function gets called, authentication was successful.
res.redirect('/'+req.user.username);
});
/* GET user Page */
router.get('/:username', isAuthenticated, function(req, res){
res.render(req.params.username, { user: req.user });
希望有所帮助:)