如何在我的express.js 服务器中使用条件。如果用户登录,我想更改根和端服务器渲染我的 react 应用程序。如果用户登录,此条件不起作用 if(!isLoggin)
我将其更改为 true,因此这应该使用 React 呈现我的索引。问题出在哪里?
if(typeof(isLoggin)=='undefined'){
var isLoggin = false;
}
//roots
if(!isLoggin){
//index
app.get('/', function(req, res){
res.render("indexNotLogin",{title:''});
})
//funkcje
app.get('/funkcje', function(req, res){
res.render("funkcje",{title:'Funkcje'});
})
//zaloguj
app.get('/zaloguj', function(req, res){
res.render("zaloguj",{title:'Zaloguj się'});
})
//zaloguj
app.post('/trylogin', function(req, res){
var username = req.body.name;
var password = req.body.password;
connection.query("SELECT * FROM user WHERE username='"+username+"' AND pass='"+password+"'", function(error, rows,fields){
//callback
if(!!error){
console.log('error in query');
}else{
if(rows.length){
res.send('user zalogowany')
isLoggin=true;
}else{
res.send('user nie istnieje')
}
}
})
})
}else{
console.log("to jest true: "+isLoggin);
app.get('/', function(req, res){
res.render("index",{title:'Zaloguj sie'});
})
}
@edit/zaloguj,/funkcje 这是我的静态根
最佳答案
首先,使用 session 而不是标志实现登录。
app.post('/trylogin', function(req, res){
var username = req.body.name;
var password = req.body.password;
connection.query("SELECT * FROM user WHERE username='"+username+"' AND pass='"+password+"'", function(error, rows,fields){
if(!!error){
console.log('error in query');
}else{
if(rows.length){
res.send('user zalogowany')
req.session.user_id = put_user_id_here
}else{
res.send('user nie istnieje')
}
}
})
})
如果您想检查用户是否登录以限制访问,最好实现您自己的 Express 中间件 ( http://expressjs.com/en/guide/using-middleware.html#middleware.router )。使用如下所示的身份验证中间件,您不必添加包装路由定义的条件 block 。
app.use(function(req, res, next) {
if (req.session.user_id) {
next();
} else {
res.status(401).send('Unauthorized')
}
});
关于javascript - 在express.js服务器中使用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47532076/