【问题标题】:node redirect not working on angular节点重定向不适用于角度
【发布时间】:2015-09-18 05:02:01
【问题描述】:

嗨,我是 node 新手,我正在构建一个简单的 MEAN 堆栈应用程序,以减少我发送这样的前端文件的代码

app.use(express.static(path.join(__dirname, 'public')));

我还为简单的身份验证构建了一个简单的中间件

requireLogin = function (req, res, next) {
  if (!req.user) {
      console.log('redirecting :)');
      res.redirect('/');
  } else {
      next();
  }
};

app.use('/rooms',requireLogin);

我正在尝试在有角度的路线上使用这个中间件。 但这在我浏览我的 Angular 应用程序时不起作用(当我直接将 URL 放到地址栏时它起作用)我还删除了由 angular 添加的 /#/。

    $locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});

我正在使用 ui-router 进行路由。

【问题讨论】:

    标签: angularjs node.js express angular-ui-router


    【解决方案1】:

    您应该在 angular 上进行重定向,而不是在 node.js 应用程序上。例如,

    requireLogin = function (req, res, next) {
      if (!req.user) {
          console.log('User does not exist.');
          return false;
          // 
      } else {
          next();
      }
    };
    
    app.use('/rooms', requireLogin);
    

    那么,/rooms 将无法访问,除非有用户登录。

    后端路由(快速路由):这些是最终用户不必知道甚至使用它们的路由(您的 Angular 应用程序将使用它们与后端通信以处理其数据,但最终用户不会将它们直接放在浏览器上))。

    前端路由(角度路由):是映射到应用程序不同页面的路由,因此,最终用户可以使用它们直接访问应用程序的某些部分。

    阅读Express.js or angular for handling routes in a MEAN application?了解更多详情。

    【讨论】:

    • 我遇到了类似的问题,res.redirect('/') 无法正常工作。我改为创建一条路线让角度处理它。但是,当用户加载页面时,在用户被重定向回索引之前会有一点延迟。有没有办法解决异步操作的这种滞后? IE,如果服务器的响应是false,我从使用$location.url('/') 的控制器发送我的回调,当检查req.session.userID 时——有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多