node.js - Express-Validierungs-Anmeldeformular, wie soll man es beurteilen?
给我你的怀抱
给我你的怀抱 2017-06-20 10:06:32
0
2
776

Problembeschreibung: Bei der Bearbeitung des Formulars mit express session实现一个登录页面,当使用app.post die Aussage

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

Unter diesen ist der json Dateiinhalt:

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

Es tritt ein Problem auf, die spezifischen Erscheinungsformen sind:

  1. Der Benutzername und das Passwort werden in einer json文件中,在app.js-Datei abgelegt und darin verarbeitet

    Wenn der Benutzername und das Passwort beim Testen korrekt sind, wird Folgendes angezeigt:

TypeError: Cannot read property 'password' of undefined
overflowIch habe die Informationen überprüft und

konsultiert, aber keine eindeutige Antwort erhalten.

Gibt es im Forum einen Experten auf diesem Gebiet, der einige Lösungen anbieten kann?

app.jsDas Folgende ist der Code von

: 🎜
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);
给我你的怀抱
给我你的怀抱

Antworte allen(2)
我想大声告诉你
if (req.body.password != user[req.body.user].password || !user[req.body.user]) {

这里的判断,写反了吧
应该是:

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

首先得判断json里面有没有req.body.user这个属性。

巴扎黑

我找到了解决这个问题的另一种方案:

应该先判断是否有账户,否则将得到cannot read property password of undefined错误:

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

结合之前的反向思路,两种方案都可以很好地解决此问题。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage