【问题标题】:Page redirection without hash part没有哈希部分的页面重定向
【发布时间】:2013-12-11 09:30:18
【问题描述】:

我在 expressjs app.js 文件中有以下获取路线。

app.get('/admin', function(req, res, next){
  if(req.isAuthenticated()) { 
    return next();
  }

  res.redirect('/admin/login');

},Routes.Admin.Index);

如果用户未登录(未通过身份验证)并访问了路由 /admin#/dashboard 上述实现将用户重定向到 /admin/login#/dashboard ,但我如何才能将用户重定向到 /admin/login 只;不是/admin/login#/dashboard#/dashboard 部分对于 /admin/login 来说是完全不需要的,因此至少在我的 server 重定向时它不应该存在。如果用户在/admin/login/ 路由的地址栏中手动输入它,我不会在意。

更新

这两件事

<a href="/admin/login"> Login </a>

window.location.href = "/admin/login";

不关心地址栏中当前的内容,但为什么

res.redirect('/admin/login')

会吗?

【问题讨论】:

  • 你的意思是/admin/login#dashboard/admin/login/#/dashboard 将是一条不同的路线。
  • 是的,我的意思是/admin/login#dashboard。如果它们不同,我将编辑我的问题。

标签: javascript node.js redirect express


【解决方案1】:

URL 哈希未发送到服务器。因此,服务器无法在重定向中更改它。如果要更改哈希部分,则将以下脚本发送到客户端,并从客户端进行重定向。

app.get('/admin', function(req, res, next){
  if(req.isAuthenticated()) { 
    return next();
  }

  res.send('<html><body><script>window.location.href="/admin/login";</script>');

},Routes.Admin.Index);

更新:假设我在位置栏中输入 /admin#dashboard。发往服务器的请求仅适用于 /admin。当您从服务器重定向到 /admin/login 时,当响应返回时,浏览器只会将 /admin 替换为 /admin/login。哈希部分保持不变。

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多