如何获得护照中的用户页面

时间:2015-08-01 14:53:50

标签: node.js logging passport.js

我正在制作非常简单的用户登录系统。每个用户都有自己的页面(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中的页面?非常感谢你的帮助。

1 个答案:

答案 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 });

希望有所帮助:)