Javascript 在Express中发布表单后,如何在URL中显示用户名?
Im使用Express框架和mysql数据库。 我想在发布登录表单后,在url中显示数据库用户名,如“localhost:1001/Home/Jay” 我尝试了GET方法,但在GET方法中,如果键入“localhost:1001/Home/Jay”,则在会话中以及url中的登录页面中,我会在主页中重定向它,而不显示我必须登录 这是routes文件夹中的my user.js文件Javascript 在Express中发布表单后,如何在URL中显示用户名?,javascript,node.js,express,url,post,Javascript,Node.js,Express,Url,Post,Im使用Express框架和mysql数据库。 我想在发布登录表单后,在url中显示数据库用户名,如“localhost:1001/Home/Jay” 我尝试了GET方法,但在GET方法中,如果键入“localhost:1001/Home/Jay”,则在会话中以及url中的登录页面中,我会在主页中重定向它,而不显示我必须登录 这是routes文件夹中的my user.js文件 const express = require('express'); const mysql = require('m
const express = require('express');
const mysql = require('mysql');
const bcryptjs = require('bcryptjs')
const salt = bcryptjs.genSaltSync(10);
const app = express();
var connection = mysql.createConnection({
host: 'localhost', // database host
user: 'root', // your database username
password: 'URU143JAY', // your database password
port: '1001', // default MySQL port
database: 'jay'
});
app.get('/login', (req, res) => res.render('login'));
app.post('/login', function(req, res, next){
const name = req.body.name;
const pass = req.body.pass;
let errors = [];
if(name == ''){
errors.push({ msg: 'Please Enter Name' });
}
if(pass == ''){
errors.push({ msg: 'Please Enter Password' });
}
req.getConnection(function(err, connection){
connection.query("SELECT * FROM App WHERE name = '"+ name +"' ", function(err, rows, fields){
console.log(rows[0].password);
if(bcryptjs.compareSync(req.body.pass, rows[0].password)){
console.log('Login');
}else{
errors.push({ msg: 'Wrong Password' });
}
if(err){
console.log(err);
}else{
if(rows.length <= 0){
errors.push({ msg: 'Wrong Username' });
}
}
if(errors.length > 0){
res.render('login',{
errors,
name,
pass
});
}else{
res.render('Home', { name: name});
}
});
});
});
app.get('/Home', (req, res) => {
res.render('Home', { name: name });
});
app.get('/logout', function(req, res){
res.render('login');
});
module.exports = app;
const express=require('express');
const mysql=require('mysql');
const bcryptjs=require('bcryptjs')
const salt=bcryptjs.genSaltSync(10);
常量app=express();
var connection=mysql.createConnection({
主机:'localhost',//数据库主机
用户:'根',//您的数据库用户名
密码:“URU143JAY”,//您的数据库密码
端口:“1001”,//默认MySQL端口
数据库:“jay”
});
app.get('/login',(req,res)=>res.render('login');
app.post('/login',函数(req,res,next){
const name=req.body.name;
const pass=req.body.pass;
让错误=[];
如果(名称=“”){
错误。推送({msg:'请输入名称'});
}
如果(通过=“”){
错误。推送({msg:'请输入密码'});
}
请求getConnection(函数(错误,连接){
connection.query(“从应用程序中选择*,其中name=”+name+“”,函数(err、行、字段){
console.log(行[0]。密码);
if(bcryptjs.compareSync(req.body.pass,行[0]。密码)){
log('Login');
}否则{
错误。推送({msg:'错误密码'});
}
如果(错误){
控制台日志(err);
}否则{
如果(行数0.0){
res.render('login'{
错误,
名称
通过
});
}否则{
res.render('Home',{name:name});
}
});
});
});
app.get('/Home',(请求,res)=>{
res.render('Home',{name:name});
});
app.get('/logout',函数(req,res){
res.render(“登录”);
});
module.exports=app;
这是登录表单login.ejs
<form method="POST" class="register-form" id="login-form">
<div class="form-group">
<label for="your_name"><i class="zmdi zmdi-account material-icons-name"></i></label>
<input type="text" name="name" id="your_name" placeholder="Your Name" value="<%= typeof name != 'undefined' ? name : '' %>" />
</div>
<div class="form-group">
<label for="your_pass"><i class="zmdi zmdi-lock"></i></label>
<input type="password" name="pass" id="your_pass" placeholder="Password" value="<%= typeof pass != 'undefined' ? pass : '' %>" />
</div>
<div class="form-group form-button">
<input type="submit" name="signin" id="signin" class="form-submit" value="Log in" />
</div>
</form>
您必须使URL路径动态:
app.get('/Home/:id', function(req, res){
// render your dynamic template here
console.log(req.params.id)
});
因此呈现:“localhost:1001/Home/Jay”
在这里可以查看更多路由示例的更多文档:其显示在登录@siteDefenders后无法回家您必须在登录后映射您的路由,有人问了一个类似的问题:app.get('Home/:name',function(req,res){console.log(req.params.name);res.render('Home',{name:name};});我像这样使用get页面,但它仍然显示无法在@siteDefenders上获得主页。登录时,您必须像这样映射路径:app.use(“/Home/”,“my_path”);