如何在护照中获取用户页面
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 });
希望对您有所帮助:)
我正在制作非常简单的用户登录系统。每个用户都有自己的页面 (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 });
希望对您有所帮助:)