如何解决NodeJS和Excel中的登录系统
因此,我正在创建一个基本系统,该系统在nodejs中运行登录系统,并使用Excel文件作为基础进行表达。 excel CSV文件将包含用户名和密码的列表,我正在使用fast-csv读取它。但是,当它与列表进行身份验证时,它仅与第一条记录匹配。不是Excel中的其他记录。有什么线索吗?代码如下:
index.js文件
var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var csv = require('fast-csv')
var fs = require('fs')
app.listen(80,function(){
console.log("Server is running")
})
app.use(express.static(path.join(__dirname,'public')));
app.use(bodyParser.urlencoded({extended : true}));
app.post("/",function (req,res) {
fs.createReadStream(path.resolve(__dirname,'master_data.csv'))
.pipe(csv.parse({ headers: true}))
.on('error',error => console.error(error))
.on('data',row => {
if(req.body.username == row.username && req.body.password === row.password && row.loggedIn == 'FALSE'){
res.send("Login Successful. <br> Your link is available below:" + row.link)
}else{
res.send("Login Failed")
}
})
// Log file created below
var userSchema = {
Username: req.body.username,loginDateTime: new Date().toString(),ipAddress: req.ip,};
fs.appendFile('logfile.txt',JSON.stringify(userSchema) + ",",function(err,file){
if(err) throw (err);
})
});
index.html文件
<html>
<head>
<title>School Login Page</title>
<link rel="stylesheet" type="text/css" href="./css/mainCSS.css">
</head>
<body>
<h2>School Login Page</h2><br>
<p>Please enter all details exactly as per details provided to you.</p>
<form action="/" method="POST">
<label for="username">Username</label>
<input type="text" id="username" name="username" value="" required><br><br>
<label for="password">Password</label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="submit" id="submitButton">
</form>
</body>
</html>
我也想为登录失败创建警报,但是我知道您无法在nodejs中创建警报服务器端。我该如何在前端?谢谢
解决方法
将为CSV的每一行触发data
事件。您想要的是对照所有当前记录检查用户名和密码。
要实现此目的,请更改以下内容:
fs.createReadStream(path.resolve(__dirname,'master_data.csv'))
.pipe(csv.parse({ headers: true}))
.on('error',error => console.error(error))
.on('data',row => {
if(req.body.username == row.username && req.body.password === row.password && row.loggedIn == 'FALSE'){
res.send("Login Successful. <br> Your link is available below:" + row.link)
}else{
res.send("Login Failed")
}
})
收件人:
let isValid = false,rowLink;
fs.createReadStream(path.resolve(__dirname,row => {
if(req.body.username == row.username && req.body.password === row.password && row.loggedIn == 'FALSE'){
isValid = true;
rowLink = row.link
}
})
.on('end',() => {
if (isValid) {
res.send("Login Successful. <br> Your link is available below:" + rowLink)
} else {
res.send("Login Failed")
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。