2015-01-20 2 views
2

사용자가 로그인하여 데이터 파일을 다운로드 할 수있게 해주는 익스프레스 앱이 있습니다. 로그인 후 홈 페이지도 있습니다. 사용자가 로그인하지 않고 특정 파일에 대한 URL을 입력하면 앱이 먼저 사용자에게 로그인하도록 요청합니다. 이는 의도적으로 설계된 것입니다. 그러나 사용자가 로그인하면 사용자가 홈 페이지로 리디렉션되지 않고 파일이 다운로드됩니다. 사용자가 로그인하고 홈 페이지로 리디렉션 한 다음 사용자가 로그인 한 후 한 번 클릭하여 파일을 다운로드 할 수있는 방법이 있는지 궁금합니다. 사용자가 성공적으로 로그인 페이지에 머물러 있기 때문에 혼란 스럽습니다. 로그인하고 파일을 다운로드하십시오. 다음은 코드 스 니펫입니다. 나는 익스프레스 4.x를 사용하고있다 :Node.js 및 Express - 로그인 및 다운로드 후 리디렉션

app.get('/dat/:file(*)', routes.ensure_authenticated, function(req, res, next) { 
    var path = __dirname + '/public/dat/' + req.params.file; 
    res.download(path); 
}); 
app.use('/', serveStatic(__dirname + '/public')); 

// dat directory requests 
app.use('/dat', routes.ensure_authenticated, serveIndex('public/dat', { icons: true })); 

답변

0

나는 그것을 서버 쪽에서하는 방법을 생각할 수 없다.

클라이언트 쪽에서 다운로드로 리디렉션을 트리거 할 수 있습니다.

/#download=link_or_id으로 리디렉션하고 자바 스크립트로 해시를 구문 분석하여 최종 다운로드 링크 (link_or_id 건)를 얻는 것과 같습니다. 그런 다음 다운로드가 트리거 된 후 사용자가 페이지를 다시로드 할 때 다운로드가 다시 트리거되지 않도록 위치에서 해시를 제거하십시오.

또한 자바 스크립트를 사용하는 대신 /?download=link_or_id으로 리디렉션하고 서버 측에 meta refresh 태그를 삽입하여 <head> 내부에 삽입 할 수 있습니다.

0

당신은 프로그래밍의 setTimeout을 통해 또는 문서로드에 클라이언트 측에서 아약스 GET 요청을 보낼 수 있습니다, 그래서 것 같은 뭔가 :

$(function() { 
    $.get('/dat/filename', function(){ 
     //enter code here 
    }); 
}): 
관련 문제