我有一个 Express 应用程序,允许用户登录和下载数据文件。登录后还有一个主页。如果用户在未登录的情况下输入特定文件的 URL,应用程序将首先要求用户登录,这是设计使然。但是,用户登录后,会下载该文件,而不会将用户重定向到主页。我想有没有办法让用户登录后重定向到主页,然后一键下载文件。现在有点困惑,因为用户成功后卡在登录页面登录并下载文件。下面是代码片段。我正在使用express 4.x:
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 }));
最佳答案
我想不出一种仅在服务器端执行此操作的方法。
您可以触发客户端重定向到下载。
类似于重定向到 /#download=link_or_id
并使用 JavaScript 解析哈希值以获得最终的下载链接(link_or_id
东西)。然后,在触发下载后,从位置中删除哈希值,以便当用户重新加载页面时不会再次触发下载。
此外,您可以执行类似的重定向到 /?download=link_or_id
的操作,而不是使用 JavaScript和服务器端插入 meta refresh里面的标签<head>
.
关于javascript - Node.js 和 Express - 登录和下载后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28052074/