![](/img/trans.png)
[英]SequelizeDatabaseError: relation "users" does not exist in Koa.js framework
[英]Only redirect unauthenticated users for missing resources, within Koa.js?
我的應用程序使用Koa.js和koa-passport進行身份驗證邏輯。 我設置它的方式是將中間件(護照)插入公共內容(js,css,img等)或更確切地說是靜態中間件與私有控制器(使用trie-router )之間。 然后,如果未經身份驗證的用戶嘗試訪問路由器,則僅將請求重定向到登錄URL。
現在,我的問題是,當公共資產文件夾中缺少某些圖像時,我將轉到身份驗證中間件,然后再次重定向到登錄URL。 這是有問題的,因為我在日志中獲得了302
重定向,因此我想防止這種情況的發生。
無論如何,是否有安全地知道該請求將與trie-router中的路由匹配作為重定向的前提條件,否則返回404
?
您可以發布您的配置代碼嗎?
路徑仍在路徑上匹配,因此,如果僅在這些路徑上安裝經過身份驗證的中間件,則它應能按預期工作。 例如:
app.use('/private', passport.authenticate());
因此,如果找不到該文件,則看起來好像是靜態中間件。
您可以編寫一個自定義的中間件,例如下面的fileNotFound()
,該中間件在靜態之后和控制器之前使用。
就像是:
var serve = require('koa-static');
function fileNotFound(rootPath){
var pattern = new RegExp('^' + rootPath + '/.*/')
return function *(next){
if(pattern.test(this.path)){
this.throw(404);
}
else{
yield next;
}
}
}
app.use(serve('/public'));
app.use(fileNotFound('/public'));
// add controllers after this
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.