Как сделать после аутентификации с помощью JWT - PullRequest
0 голосов
/ 07 февраля 2019

Приложение в Nodejs и Express.Аутентификация с помощью JWT.Я внедрил систему аутентификации с JWT, и с Почтальоном она работает отлично.Проблема возникает, когда после прохождения промежуточного программного обеспечения аутентификации запроса и прохождения через контроллер, который управляет GET страницы, которую я хочу отобразить, я получаю ответ и работаю с res.text (), который возвращает строку текста.В текстовой строке я получаю всю нужную мне страницу, я отрисовываю ее с помощью document.write (resBody), она обновляет содержимое с новой страницей, но не обновляет ни историю, ни окно браузера, которое немного испортилось.Есть ли способ сделать ответ в JavaScript?Спасибо

// index.hbs
...
...
...
<form id="enter"  enctype="multipart/form-data" name="enter">
    <input type="submit" value="Entrar"> 
</form>

<script type="text/javascript">
    const formEnter = document.querySelector('#enter')
    formEnter.addEventListener('submit',function(event){
        token = "Bearer " + localStorage.getItem('token')
        fetch('/api/brands',{
            method:'get',
            headers: {
                'Content-Type':'application/json;charset=UTF-8',
                'Authorization': token
            }
    .then(function(response) {
       return response.text()
    }).then(resBody => {
       document.write(resBody)  //<--- resBody tiene la página que quiero renderizar
    })
</script>


//brandCtrl.js

...
...


function getBrands(req,res){
    Brand.find({}, (err,brands) => {
        if (err) return res.status(500).send({message: `Error en la petición: ${err}`})
        if (!brands) return res.status(404).send({message: `No se existen Marcas en la BD`})

        res.locals.brands = brands
        res.render("brands/brands",res.locals.brands)
    })
}


...
...

1 Ответ

0 голосов
/ 07 февраля 2019

Не уверен, что вы подразумеваете под "рендеринг ответа в javascript".Вы можете ожидать, что ваше приложение узла вернет ответ json (используя res.json (YOUR RESPONSE JSON)) или предоставит шаблон (res.render ('some template')) при успешной аутентификации.

Вы не используете API выборки правильно.Ваш запрос ожидает ответ JSON, но вы отправляете HTML-строку в качестве ответа.

Если вы хотите отобразить HTML-страницу с использованием JavaScript.Вы можете использовать jquery:

$('body').load( url,[data],[callback] ); 

Вы можете ознакомиться с документацией здесь.http://api.jquery.com/load/#urldatacallback

Затем вы можете изменить историю браузера, используя history.pushState.Но все это уже сделано любой средой интерфейса.Так что или используйте один или сделайте это вручную.

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