节点.js和快速 - 登录和下载后重定向

Node.js and Express - Redirect after Login and Download

本文关键字:下载 登录 重定向 js 节点      更新时间:2023-09-26

我有一个快速应用程序,允许用户登录和下载数据文件。 登录后还有一个主页。 如果用户在未登录的情况下输入特定文件的 URL,则应用程序将首先要求用户登录,这是设计使然。 但是,在用户登录后,将下载文件,而不会将用户重定向到主页。我想知道是否有办法允许用户登录,重定向到主页,然后在用户登录后一键下载文件。 现在有点令人困惑,因为用户在成功登录并下载文件后被困在登录页面上。 下面是一段代码。我正在使用快递 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,在 <head> 中插入元刷新标记。

您可以通过 setTimeout 或在文档加载时以编程方式从客户端发送 ajax GET 请求,因此它将如下所示:

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