简体   繁体   中英

How to show username in URL after POST form in Express?

Im using Express framework and mysql database. i want to show database username in url like "localhost:1001/Home/Jay" After post login form.

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

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;

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>

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)
});

Thus rendering: "localhost:1001/Home/Jay" More documentation can be viewed here on more routing examples: expressJs routing

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM