繁体   English   中英

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

[英]Node.js and Express - Redirect after Login and Download

我有一个快速应用程序,允许用户登录和下载数据文件。 登录后还有一个主页。 如果用户未登录就输入特定文件的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 )。 然后,在触发下载后,从位置删除哈希值,这样当用户重新加载页面时不会再次触发下载。

另外,除了使用JavaScript,您还可以执行类似的重定向到/?download=link_or_id并在服务器端在<head>内插入一个meta refresh标签。

您可以通过setTimeout或在文档加载时以编程方式从客户端发送ajax GET请求,因此类似于:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM