如何在Express中的POST表单后在URL中显示用户名? [英] How to show username in URL after POST form in Express?
问题描述
我使用Express框架和mysql数据库.我想在登录表单后在URL中显示数据库用户名,例如"localhost:1001/Home/Jay".
Im using Express framework and mysql database. i want to show database username in url like "localhost:1001/Home/Jay" After post login form.
我在GET方法中尝试过,但是在get方法中,如果在会话中以及URL的登录页面中输入了"localhost:1001/Home/Jay",则它在首页中的重定向未显示我必须登录时就会出错
i tried in GET method but in get method im getting error in session and also in login page in url if type "localhost:1001/Home/Jay" its redirect in Home Page without showing that i have to login
这是我在routes文件夹中的user.js文件.
This is my user.js file in routes folder.
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;
这是登录表单login.ejs
This is login form 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路径动态化:
You have to make the URL path dynamic:
app.get('/Home/:id', function(req, res){
// render your dynamic template here
console.log(req.params.id)
});
因此渲染:"localhost:1001/Home/Jay"在此处可以找到更多路由示例的更多文档: expressJs路由
Thus rendering: "localhost:1001/Home/Jay" More documentation can be viewed here on more routing examples: expressJs routing
这篇关于如何在Express中的POST表单后在URL中显示用户名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!