suchen

Heim  >  Fragen und Antworten  >  Hauptteil

node.js - Express-Validierungs-Anmeldeformular, wie soll man es beurteilen?

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);
给我你的怀抱给我你的怀抱2720 Tage vor752

Antworte allen(2)Ich werde antworten

  • 我想大声告诉你

    我想大声告诉你2017-06-20 10:08:32

    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这个属性。

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-06-20 10:08:32

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

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

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

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

    Antwort
    0
  • StornierenAntwort