簡體   English   中英

僅在Koa.js中重定向未經身份驗證的用戶以查找丟失的資源?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM