javascript - Node.js 和 Express - 登录和下载后重定向

标签 javascript node.js web express

我有一个 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/

相关文章:

javascript - knox S3 上传损坏或 chop 的文件

javascript - 使用 angular2 和 typescript 进行谷歌登录 - 从哪里获得 gapi?

javascript - 如何使用单个按钮单击来更改占位符并在同一按钮单击事件上捕获新数据

javascript - 诗乃与 Mocha : How to await for a promised to be resolved before assertion in test function?

javascript - 如何使用 Node.js Express 强制 nginx proxy_next_upstream?

html - 在 HTML 中跨 2 个框架显示一个 DIV

python - 从列表和字典中抓取网页

javascript - 没有事件服务器 - atom-ternjs

templates - Odoo <t t-call ="website.layout"> qWebException

jquery - 通过 JQuery 发布数据时,nodejs API 中的 req.body 为空