[免责声明:我绝对是Web工程领域的初学者!:)]
我构建了一个带有小型数据库的NodeJS服务器,用于存储用户及其密码。 我为此创建了一个小网站,您可以在其中输入用户名和密码,并为您创建一个会话,以便您登录。</ p>
现在,我想用Python编写一些东西来自动登录一个小树莓。 经过大量研究,我想出了一个像这样的 python程序:
import requests
def authentification():
s = Session();
req = Request('POST', "http://192.168.7.1:3000/auth")
prepped = req.prepare()
prepped.body = 'username=test&password=test'
#del prepped.headers['Content-Type']
resp = s.send(prepped)
print resp.text
r = requests.get('http://192.168.7.1:3000/home')
print r.text
我在NodeJS应用程序中的功能如下:
app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;
console.log("Somebody tries to acces");
console.log(username)
if (username && password) {
connection.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
if (results.length > 0) {
request.session.loggedin = true;
request.session.cookie.maxAge = 3000;
request.session.username = username;
response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
});
当我尝试通过您的程序在浏览器中进行身份验证时,我将得到以下结果:response.send('请输入用户名和密码!'); 我的发帖请求有什么问题,我需要更改什么才能找到我的密码和用户名?
对我来说,另一个重要的问题是我如何使Session在Python中保持清醒状态以执行其他一些请求。对于文件等?
非常感谢您的帮助! 如果我的问题或我提供的输入存在任何问题,请告诉我我会提供您所需的信息!
亲切问候 卡尔
答案 0 :(得分:0)
通过requests module,您可以使用data
属性发送 post 请求,并向其中提供包含有效负载的 dictionary 。看起来像这样
import requests
url = 'http://localhost:3000/auth'
correct_payload = {'username': 'hello', 'password': 'p4$$w0rd!'}
wrong_payload = {'username': 'hello'}
# Output => OK
r = requests.post(url, data=correct_payload)
print(r.text)
# Output => You need to provide Username & password
r = requests.post(url, data=wrong_payload)
print(r.text)
要解析从客户端接收的数据,请使用body-parser包作为Express.js middleware。这将解析并将您的数据放入req.body
中。代码将如下所示:
const express = require('express')
const bodyParser = require('body-parser')
const port = 3000
const app = express()
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/auth', (req, res) => {
const { username, password } = req.body;
if (username && password) {
res.send('OK'); // ALL GOOD
} else {
res.status(400).send('You need to provide Username & password'); // BAD REQUEST
}
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))