[英]Why is “module.exports = (req, res) => {” stopping my routing from working
像這樣調用href:
<a class="navlink" href="/auth/logout">Logout</a>
單擊中間件(名為“auth.js”)中的控制器,並調用另一個控制器“logout.js”時,它不會執行任何操作。 會話應該銷毀並重定向索引。 相反,薪水稍微退縮,但保留在當前頁面上。
“auth.js”
const User = require('../database/models/User')
module.exports = (req, res, next) => {
User.findById(req.session.userId, (error, user) => {
if (error || !user) {
return res.redirect('create')
}
next()
})
}
logout.js”
module.exports = (req, res) => {
req.session.destroy(() => {
res.redirect('/')
})
}
我希望控制器指向索引。
如果按鈕最終通過控制器觸發到服務器的ajax調用,則ajax調用本身不會注意重定向響應(因此res.redirect()
不執行任何操作)。 您必須在客戶端控制器中看到來自ajax調用的重定向響應的代碼,然后通過相應地設置window.location
進行操作以使瀏覽器頁面發生更改。
瀏覽器中的內容會自動跟隨響應中的重定向:
<a href="xxx">Click here</a>
) window.location
因此,如果您的請求是通過Javascript發送的,那么它將不會自動遵循重定向響應。 您的Javascript必須看到響應返回,看到它是3xx響應,從響應中獲取重定向位置,然后設置window.location
以告知瀏覽器轉到該新位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.