【问题标题】:Express Middleware not rendering the viewExpress 中间件不呈现视图
【发布时间】:2021-05-23 11:54:28
【问题描述】:

我编写了一个身份验证中间件,当它失败时,我想呈现一个页面而不是发送对我的 xhr 请求的响应。怎么办?

const jwt = require('jsonwebtoken')

const User = require('../models/users')
const express = require('express')

const auth = async (req, res ,next) => {
    try {

    //res.render("404")
    const token = req.header('Authorization').replace('Bearer ' , '') //token comes from client in the header section named Auth(here)
    const data = jwt.verify(token , 'itistechvaulttoken') //this gives back the id of the user and also iat :- issued at , a callback can be attached to 
                                        // .verify :-- see jsonwebtoken documentation for details .

    const user = await User.findOne({ _id : data._id})

    if(!user) {
        throw new Error()
    }

    req.token = token  //this is being use mainly for logout route handler  
    req.user = user
    next()

} catch(e) {

    res.status(401).render("404")
    
    }
 }

  module.exports = auth

我已经创建了一个表单并使用 xhr 请求将数据发送到我的后端进行路由,然后我将其重定向到另一个我想要呈现视图的路由。

我的路线:-

router.post('/users' ,async (req, res) => {
console.log("Request Recieved")
const user = new User(req.body)

try {
    await user.save()
    const token = await user.generateAuthToken()
    //console.log(token)
    //res.status(201).send({ user , token})
    req.accesstoken = token
    res.redirect(302 , "/users/me" )
}
catch(e) {
    console.log(e)
    res.status(400).send("User not created" + e)
}


   })

/用户/我:-

router.get('/users/me', auth, async (req, res) => {
console.log("in users/me")
res.send(req.user)  
  })

我知道这里的身份验证必须失败,并且中间件捕获的代码应该运行,我正在尝试渲染视图但失败。

【问题讨论】:

  • 很难理解你要求/想要达到的目标。

标签: node.js express authentication xmlhttprequest middleware


【解决方案1】:

我猜您希望您的服务器上的 xhr 端点代码使您的用户浏览器在身份验证失败时显示某种错误页面。

为此,您需要浏览器中的 Javascript 代码来检测对 xhr 请求的响应中的错误消息并导航到错误页面。在没有浏览器合作的情况下,您的 nodejs 应用在响应 xhr 请求时无法强制进行任何类型的重定向。

【讨论】:

  • 请指导我如何在填充该页面时使我的 xhr 请求导航到该页面。例如,如果我想在用户成功登录后将用户发送到一个页面,那么如何使用用户数据填充该页面?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
相关资源
最近更新 更多