Node js - e js: Как запустить проверку пароля при входе в систему / форме регистрации - PullRequest
0 голосов
/ 05 февраля 2020

Я создал страницу входа в качестве небольшого примера. Форма запрашивает обычные вещи, такие как имя пользователя, пароль и т. Д. c, она также просит пользователя подтвердить пароль, и, если длина отличается, она должна выдать сообщение об ошибке, предупреждающее пользователя о несоответствии.

Работает Если я введу правильную password и confirm password длину,

Это не работает , если password не равно confirm password и ошибка выглядит следующим образом:

Ошибка: не удалось найти представление "/ register" в каталоге представлений "/ home / emanuele / Desktop / cashman-tracker-dashboard / views" в Function.render (/ home / emanuele / рабочий стол / панель мониторинга трекмана / node_modules / express / lib / application. js: 580: 17) в ServerResponse.render (/ home / emanuele / рабочий стол / панель мониторинга трекмана / node_modules / express / lib / response. js: 1012: 7) на ServerResponse.res.render (/ home / emanuele / рабочий стол / cashman-tracker-dashboard / node_modules / express -e js -layouts / lib / express -layouts. js: 77: 18) в /home/emanuele/Desktop/cashman-tracker-dashboard/routes/users.js:30:7 в Layer.handle [как handle_request] (/ home / emanuele / Рабочий стол / приборная панель отслеживания наличных / node_modules / express / lib / router / layer. js: 95: 5) на следующем (/ home / emanuele / рабочий стол / приборная панель отслеживания кассира / node_modules / expre ss / lib / router / route. js: 137: 13) в Route.dispatch (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/router/route.js:112: 3) в Layer.handle [as handle_request] (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/router/layer.js:95:5) в / home / emanuele / Desktop / Панель мониторинга cashman-tracker / node_modules / express / lib / router / index. js: 281: 22 в Function.process_params (/ home / emanuele / Рабочий стол / панель мониторинга cashman-tracker / node_modules / express / lib / router / index . js: 335: 12) на следующем (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/router/index.js:275:10) месте Function.handle (/ home /emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/router/index.js:174:3) на маршрутизаторе (/ home / emanuele / Desktop / cashman-tracker-dashboard / node_modules / express / lib /router/index.js:47:12) в Layer.handle [как handle_request] (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/router/layer.js : 95: 5) в trim_prefix (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/router/index.js:317:13) в / home / emanuele / Desktop / cashman-tracker -dashboard / node_modules / express / lib / router / index. js: 284: 7

Ниже приведен код с соответствующими проверками:

пользователей. js

const express = require('express');
const router = express.Router();

// Login Page
router.get('/login', (req, res) => res.render('login'));
// Register Page
router.get('/register', (req, res) => res.render('register'));

// Register Handle
router.post('/register', (req, res) => {
    const { name, email, password, password2 } = req.body;
    let errors = [];

    // Check required fields
    if (!name || !email || !password || !password2) {
        errors.push({ msg: 'Please fill in all fields' });
    }
    // Check password
    if (password !== password2) {
        errors.push({ msg: 'Passwords do not match' });
    }
    // Check password length
    if (password.length < 6) {
        errors.push({ msg: 'Password should be at least 6 characters' });
    }
    if (errors.length > 0) {
        res.render('register', {
            errors,
            name,
            email,
            password,
            password2
        });
    } else {
        res.send('pass');
    }
});

module.exports = router;

register.e js

<div class="row mt-5">
    <div class="col-md-6 m-auto">
        <div class="card card-body">
            <h1 class="text-center mb-3"><i class="fas fa-user-plus"></i>Register</h1>
            <% include ./partials/messages %> //<-- This seems to be the cause of error
            <form action="/users/register" method="POST">
                <div class="form-group">
                    <label for="name">Name</label>
                    <input
                    type="name"
                    id="name"
                    name="name"
                    class="form-control"
                    placeholder="Enter Name"
                    value="<%= typeof name != 'undefined' ? name : '' %>" 
                    />
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input
                    type="email"
                    id="email"
                    name="email"
                    class="form-control"
                    placeholder="Enter Email"
                    value="<%= typeof email != 'undefined' ? email : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password">Password</label>
                    <input
                    type="password"
                    id="password"
                    name="password"
                    class="form-control"
                    placeholder="Create Pasword"
                    value="<%= typeof email != 'undefined' ? password : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password2">Confirm Password</label>
                    <input
                    type="password"
                    id="password2"
                    name="password2"
                    class="form-control"
                    placeholder="Confirm Pasword"
                    value="<%= typeof email != 'undefined' ? password2 : '' %>"
                />
                </div>
                <button type="submit" class="btn btn-primary btn-block">Login</button>
            </form>
            <p class="lead mt-4">Have An Account? <a href="/users/login">Login</a></p>
        </div>
    </div>
</div>

messages.e js

<% if(typeof errors != 'undefined'){ %> 
    <% errors.forEach(function(error) { %>
      <%= error.msg %>
    <% }); %> 
<% } %>

Если это полезно, я также прикрепляю экран печати дерева своего проекта:

tree

Кажется, проблема заключается в следующем утверждении ниже в register.e js но я не знаю

        <% include ./partials/messages %>

Я не знаю, может ли messages.e js быть также связано с ошибка

Что я сделал до сих пор:

Я посмотрел на разные источники, и Официальная документация является той, которую я использовал. Я дважды проверял много раз, но ошибка все еще сохраняется, и как только я ввожу пароль длины X и подтверждаю пароль длины X + 1, у меня появляется эта странная ошибка.

Я не уверен, что ошибка могла быть связанных с messages.e js или с оператором <% include ./partials/messages %>, или если это может быть что-то еще.

Спасибо, что указали мне правильное направление для решения этой проблемы.

1 Ответ

1 голос
/ 06 февраля 2020

Я пробовал ваш код, и он работает нормально, единственная строка не работает:

<% include ./partials/messages %>

Вы должны изменить эту строку следующим кодом:

<%- include('partials/messages') %>

Надеюсь, это поможет вам.

...