如何在护照中获取用户页面

How to get user page in passport

我正在制作非常简单的用户登录系统。每个用户都有自己的页面 (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 });

我卡在获取用户页面上了。您对我如何在 router.get 中获得“/user.username”页面有什么建议吗?非常感谢您的帮助。

您尝试将参数传递给 express get 路由的方式存在问题。 要接收的查询参数必须在:之后指定。例如

app.get('/api/:version', function(req, res) {
    res.send(req.params.version);
  });

此代码段将识别路由 /api/1/api/2 等。这里 version 是要接收的参数。可以使用 req.param.

访问参数的值

所以在这里,我们需要在成功后将用户重定向到他的页面 login.This 可以通过创建一个路由作为 "/:username" 来完成,它将接受 username 作为参数并呈现用户页面。

现在举个例子如果用户以 '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 });

希望对您有所帮助:)