簡體   English   中英

驗證部署在nodejs上的angular應用的jwt令牌的更好方法

[英]better way to verify jwt token for angular app deployed on nodejs

我已經使用express框架創建了服務器。 我已經實現了JWT。 我創建了一個有角度的應用程序,然后將其復制到公用文件夾。 然后用

app.use(express.static(__dirname + "/public"));

公開。 現在,我想驗證我的角度路線。 現在可以調用該URL,該URL將是角度路由的URL,例如localhost:7000/alocalhost:7000/b等。 此外,還會調用諸如CSS,圖像或其他文件之類的實際文件。

因此,我使用了中間件來攔截所有服務器調用。

app.use((req, res, next) => {
   let pwt = req.cookies ? req.cookies.pwt : null;
   jwt.verify(pwt, process.env.SECRET_KEY, (err, decoded) => {
       if (decoded) {
           res.sendFile(path.join(__dirname, 'public', 'index.html'));
       } else {
           let callbackUrl = encodeURIComponent("http://" + req.headers.host + req.originalUrl);
           res.redirect(process.env.AUTH_SERVER + "/auth?_r=" + callbackUrl);
        }
   });
});

我正在檢查jwt令牌,並為每個請求返回index.html文件。 當調用圖像或任何其他CSS文件時,它將返回index.html文件。

一種方法是創建一個Angular路由URL數組,並僅當req.originalUrl來自該列表時才提供index.html文件。 但這不是一個好的方法,因為服務器不應該了解應用程序路由。 有什么辦法解決這個問題?

我認為,做到這一點的最佳方法是在構建SPA時以角度方式實現路由並將其保護在那里,但是使用快速中間件,只需從角度應用程序中保護API請求即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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