node.js - Borang log masuk pengesahan ekspres, bagaimana untuk menilai?
给我你的怀抱
给我你的怀抱 2017-06-20 10:06:32
0
2
770

Penerangan masalah: Apabila menggunakan express session实现一个登录页面,当使用app.post untuk memproses borang, nilaikan pernyataan itu

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

Antaranya, json kandungan fail ialah:

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

Masalah berlaku, manifestasi khusus adalah:

  1. Nama pengguna dan kata laluan diletakkan dalam fail json文件中,在app.js dan diproses di dalam

    .
  2. TypeError: Cannot read property 'password' of undefined
Saya menyemak maklumat dan merujuk pada

tetapi saya tidak mendapat jawapan yang pasti. overflow

Adakah pakar dalam bidang ini dalam forum yang boleh memberikan beberapa penyelesaian?

Berikut ialah kod

: app.js

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

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

Penghakiman di sini ditulis ke belakang
Sepatutnya:

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

Mula-mula anda perlu menentukan sama ada terdapat req.body.user atribut ini dalam json.

巴扎黑

Saya jumpa penyelesaian lain untuk masalah ini:

Anda harus terlebih dahulu menentukan sama ada anda mempunyai akaun, jika tidak, anda akan mendapat cannot read property password of undefinedRalat:

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

Digabungkan dengan pemikiran songsang sebelum ini, kedua-dua penyelesaian dapat menyelesaikan masalah ini dengan baik.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan