2014-09-04 1 views
4

express34.js와 passport.js를 사용하여 this tutorial을 기반으로하는 인증 시스템을 구현했습니다.ExpressJS를 사용하여 정적 파일 서버 보안

var baseURL = './dev/'; 

router.get('*', isAuthenticated, function(req, res, next){ 

    // if path contains file extension 
    // behave as static file server 
    if (req.path.indexOf('.') !== -1) { 

     var fullPath = baseURL + req.path; 
     res.sendfile(fullPath) 

    // else send index.html 
    } else { 

     res.sendfile(baseURL + '/index.html') 

    } 

}); 

I : 내가 지금 같은 경로를 사용하고 장소에 인증을 지금

var express = require('express'); 
var modRewrite = require('connect-modrewrite'); 

var app = express(); 
var baseURL = './dev/'; 
var portnum = 3000; 

app.use(modRewrite([ 
    '^[^\\.]*$ /index.html [L]' 
])) 
.use(express.static(baseURL)) 
app.listen(process.env.PORT || portnum) 

하지만을 :

는 과거에 나는이처럼 보였다 modRewrite에 명시 서버를 사용하고 있습니다 내가하려는 일을 할 수있는 더 좋은 방법이 있다고 생각하고 modRewrite뿐 아니라 express.static 서버를 활용하고 싶습니다. 또한 인증이 필요한 서버는 훨씬 느립니다. 파일을 요청할 때마다 인증을 확인해야하기 때문일 수 있습니다. 이 작업을 더 빠르게 수행하는 방법에 대한 팁은 무엇입니까?

+0

"파일이 요청 될 때마다 인증을 확인해야합니다"- passport.js에는 세션 관리가 내장되어 있습니다 (http://passportjs.org/guide/configure/). – kol

답변

0

미들웨어를 사용하여 사용자가 인증되었는지 (JWT 토큰 또는 기타 여러 인증 스키마에 있는지) 여부를 확인합니다.

app.use(function (req, res, next) { 
    if(isAuthenticated()) { 
     next(); 
    } else { 
     res.send(401, 'unauthorized'); 
    } 
}); 
관련 문제