如何在Express中的POST表单后在URL中显示用户名? [英] How to show username in URL after POST form in Express?

查看:39
本文介绍了如何在Express中的POST表单后在URL中显示用户名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆