如何与智威汤逊验证之后呈现
在和的NodeJS应用快。认证与JWT。我已经实现了认证系统,智威汤逊与邮差它完美的作品。问题是当请求传递认证中间件和经过管理我想渲染页面的GET控制器后,我收到的响应和处理res.text()返回文本字符串。在文本字符串,我得到完整的网页我想,我有文件撰写(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)
})
}
...
...
回答如下:
不知道你是什么意思“渲染JavaScript中的响应”的意思。您可以期待您的节点应用程序在成功认证返回一个JSON响应(使用res.json(你的回答JSON))或渲染一个模板(res.render(“一些模板”))。
您未使用正确获取API。您的要求期待的JSON响应,但您发送HTML字符串作为响应。
如果你想使用JavaScript来渲染HTML页面。你可以使用jQuery:
$('body').load( url,[data],[callback] );
你可以在这里签出的文档。 http://api.jquery/load/#urldatacallback
然后,你可以通过使用history.pushState更改浏览器的历史记录。但所有这一切已经被任何前端框架完成。因此,无论使用一个或手动完成。