Как отобразить имя пользователя в URL после формы POST в Express? - PullRequest
0 голосов
/ 03 февраля 2020

Я использую Express framework и mysql database. Я хочу показать имя пользователя базы данных в URL, например, "localhost: 1001 / Home / Jay". После отправки формы входа в систему.

Я пытался в методе GET, но в методе get я получаю ошибку в сеансе, а также на странице входа в URL если набрать "localhost: 1001 / Home / Jay", его перенаправление на домашней странице не показывать, что я должен войти в систему

Это мой пользователь. js файл в папке маршрутов.

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.e js

    <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>

1 Ответ

0 голосов
/ 03 февраля 2020

Вы должны сделать URL-адрес динамическим c:

app.get('/Home/:id', function(req, res){
   // render your dynamic template here
   console.log(req.params.id)
});

Таким образом, рендеринг: "localhost: 1001 / Home / Jay" Дополнительную документацию можно посмотреть здесь на других примерах маршрутизации: expressJs маршрутизация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...