2015-01-20 2 views
2

У меня есть экспресс-приложение, которое позволяет пользователю входить в систему и загружать файлы данных. После входа в систему также есть домашняя страница. Если пользователь вводит URL-адрес в определенный файл без входа в систему, приложение сначала попросит пользователя войти в систему, которая по дизайну. Однако после входа пользователя в систему файл загружается без перенаправления пользователя на домашнюю страницу. Мне было интересно, есть ли способ разрешить пользователю входить в систему, перенаправлять на домашнюю страницу, а затем загружать файл одним щелчком мыши после входа пользователя в систему. Теперь это путают, потому что пользователь застрял на странице входа после успешного завершения вход в систему и загрузка файла. Ниже приведен фрагмент кода. Я использую express 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 и разбора хэша с JavaScript, чтобы получить окончательную ссылку для скачивания (link_or_id вещь). Затем, после запуска загрузки, удалите хэш из местоположения, чтобы загрузка не запускалась снова, когда пользователь перезагружает страницу.

Кроме того, вместо использования JavaScript вы можете сделать что-то подобное, перенаправляя на /?download=link_or_id и на стороне сервера, вставляя тег meta refresh внутри <head>.

0

Вы можете программно отправить запрос Ajax GET со стороны клиента через SetTimeout или при загрузке документа, так что это будет что-то вроде:

$(function() { 
    $.get('/dat/filename', function(){ 
     //enter code here 
    }); 
}): 
Смежные вопросы