节点重定向不适用于角度
Posted
技术标签:
【中文标题】节点重定向不适用于角度【英文标题】: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 进行路由。
【问题讨论】:
【参考方案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
时——有什么想法吗?以上是关于节点重定向不适用于角度的主要内容,如果未能解决你的问题,请参考以下文章