node.js - Formulaire de connexion de validation express, comment juger?
给我你的怀抱
给我你的怀抱 2017-06-20 10:06:32
0
2
771

Description du problème : lorsque vous utilisez express session实现一个登录页面,当使用app.post pour traiter le formulaire, déterminez la déclaration

if(req.body.password!=user[req.body.user].password||!user[req.body.user])

Parmi eux, le contenu du json fichier est :

{
  "baidu":{
    "password":"123",
    "name":"百度"
  }
}

Un problème survient, les manifestations spécifiques sont :

  1. Le nom d'utilisateur et le mot de passe sont placés dans un fichier json文件中,在app.js et traités à l'intérieur de

    Lors du test, si le nom d'utilisateur et le mot de passe sont corrects, il fonctionnera normalement, cependant, si le nom d'utilisateur et le mot de passe sont erronés, il affichera :
 ;

TypeError: Cannot read property 'password' of undefined
overflowJ'ai vérifié les informations et consulté sur

mais je n'ai pas obtenu de réponse définitive.

Y a-t-il un expert dans ce domaine sur le forum qui peut apporter des solutions ?

app.jsVoici le code de

 : 🎜
var express = require('express');
var user = require('./user');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var multer = require('multer');
var session = require('express-session');
var path = require('path');
var app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser());

app.use(session({
    secret: 'baiduApp',
    cookie: {maxAge: 60 * 1000 * 30},
    resave: true,
    saveUninitialized: false
}));

app.get('/', function (req, res) {
    if (req.session.sign) {
        console.log(req.session);
        res.render('sign', {session: req.session})
    } else {
        res.render('index', {title: 'index'})
    }
});
app.get('/out', function (req, res) {
    req.session.destroy();
    res.redirect('/');
});

app.post('/sign', function (req, res) {
    //登录的数据和user.json中的数据进行对比
    if (req.body.password != user[req.body.user].password || !user[req.body.user]) {
        res.end('sign failure');
    } else {
        req.session.sign = true;
        req.session.name = user[req.body.user].name;
        res.send('welecome <strong>' + req.session.name + '</strong>,<a href="/out">登出</a>');
    }
});
app.listen(80);
给我你的怀抱
给我你的怀抱

répondre à tous(2)
我想大声告诉你
if (req.body.password != user[req.body.user].password || !user[req.body.user]) {

Le jugement ici est écrit à l'envers
Il devrait être :

if (!user[req.body.user] || req.body.password != user[req.body.user].password) {

Vous devez d'abord déterminer s'il existe req.body.usercet attribut dans json.

巴扎黑

J'ai trouvé une autre solution à ce problème :

Vous devez d'abord déterminer si vous avez un compte, sinon vous obtiendrez cannot read property password of undefinedErreur :

if(!user[req.body.user] || req.body.password != user[req.body.user].password){
   //错误处理
}

Combinées à la pensée inverse précédente, les deux solutions peuvent bien résoudre ce problème.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal