Разместить запрос с JWT - PullRequest
1 голос
/ 03 апреля 2020

У меня есть маршрут, который публикует в /verify/:token, где :token - это jwt, но, на мой взгляд, форма отправляет запрос на сообщение в /verify/:token, а затем в логах моего маршрута c я получаю недопустимый jwt поскольку :token отправляется, как я могу это исправить?

<form action="/verify/:token" method="POST">
    <div class="input-group form-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
        <input id="passcode" type="text" class="form-control" name="passcode" placeholder="Pass Code" required>
    </div>
    <button type="submit" class="btn btn-primary" style="display: inline-block;">Verify</button>
</form>

Ответы [ 2 ]

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

Передайте токен маршрутизатору страницы формы

router.get("/", function (req, res, next) {
jwt.sign({_id: user._id}, jwtSecret, { expiresIn: '5m' }).then((token) => {
        res.render("postForm", {
            token: token
        });
  });
});

Теперь вы можете использовать токен в скрытом поле ввода, если вы используете e js в клиенте

 <form action="/verify" method="POST">
        <div class="input-group form-group">
            <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
     <input id="token" type="hidden" class="form-control" name="token" value="<%= token %> ">
            <input id="passcode" type="text" class="form-control" name="passcode" placeholder="Pass Code" required>
        </div>
        <button type="submit" class="btn btn-primary" style="display: inline-block;">Verify</button>

</form>
0 голосов
/ 03 апреля 2020

Если у вас есть jQuery на стороне клиента, вы должны запретить действие формы по умолчанию при ее отправке. Затем вам нужно отправить запрос ajax, взяв значение поля input

$('form').submit(function(e){
    //prevent default
    e.preventDefault();

    let token = $('#passcode').val();
    let url = "/verify/" + token;
    $.post( url, function( data ) {
        // Do something once the ajax call succeeds
    }).fail(function() {
         alert( "error" );
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...