AngularJS: ngRoute 导致太多重定向错误?
AngularJS: ngRoute causing too many redirects error?
index.html:
<body ng-app="myApp">
<div ng-controller="MainController">
... {{ title }} ...
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="#/register" ng-hide="authenticated">Register</a></li>
<li><a href="#/login" ng-click="login">Login</a></li>
<li><a href="#" ng-click="logout">Logout</a></li>
</ul>
</div>
...
<div ng-view></div>
</div>
</body>
省略号缩短html。 MainController 只是设置 $scope.title = "My App"
在我的 angular 模块中,我使用 ngRoute 并这样实现路由:
app.config(function($routeProvider)
{
$routeProvider
.when('/',
{
controller: 'MainController',
templateUrl: 'main.html'
})
.when('/login',
{
controller: 'AuthenticationController',
templateUrl: 'login.html'
})
.when('/register',
{
controller: 'AuthenticationController',
templateUrl: 'register.html'
});
});
我的 AuthenticationController 只定义了登录和注册函数以对服务器进行 post 调用,但我没有进行这些调用,因为我没有单击登录或注册。
在将 ng-view 换成合适的视图方面,一切都很顺利,但是当我打开控制台时,每次切换视图时,我都会收到 "localhost:3000/login" 太多的重定向。我觉得很奇怪,因为无论我点击注册、登录、注销,它总是说 "localhost:3000/login" 重定向太多。这是在 express 框架的上下文中,但我认为这不是我服务器端的错误,因为它似乎没有在 express 中访问我的 app.use('/',index) 路由器。这正常吗?
编辑:这是我的索引路由器:
var express = require('express');
var router = express.Router();
router.get('/',function(req,res,next)
{
return res.render('index', { title: 'SERVER TITLE' });
}
);
module.exports = router;
在app.js中:
app.use('/', index);
app.use('/auth', authenticate);
app.all('*',function(req,res,next)
{
if(req.isAuthenticated())
{
return next();
}
else
{
res.redirect('/login');
}
});
问题是我的客户端路由有问题,所以我的请求最终到达了服务器,最终发生了多次重定向。
index.html:
<body ng-app="myApp">
<div ng-controller="MainController">
... {{ title }} ...
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="#/register" ng-hide="authenticated">Register</a></li>
<li><a href="#/login" ng-click="login">Login</a></li>
<li><a href="#" ng-click="logout">Logout</a></li>
</ul>
</div>
...
<div ng-view></div>
</div>
</body>
省略号缩短html。 MainController 只是设置 $scope.title = "My App"
在我的 angular 模块中,我使用 ngRoute 并这样实现路由:
app.config(function($routeProvider)
{
$routeProvider
.when('/',
{
controller: 'MainController',
templateUrl: 'main.html'
})
.when('/login',
{
controller: 'AuthenticationController',
templateUrl: 'login.html'
})
.when('/register',
{
controller: 'AuthenticationController',
templateUrl: 'register.html'
});
});
我的 AuthenticationController 只定义了登录和注册函数以对服务器进行 post 调用,但我没有进行这些调用,因为我没有单击登录或注册。
在将 ng-view 换成合适的视图方面,一切都很顺利,但是当我打开控制台时,每次切换视图时,我都会收到 "localhost:3000/login" 太多的重定向。我觉得很奇怪,因为无论我点击注册、登录、注销,它总是说 "localhost:3000/login" 重定向太多。这是在 express 框架的上下文中,但我认为这不是我服务器端的错误,因为它似乎没有在 express 中访问我的 app.use('/',index) 路由器。这正常吗?
编辑:这是我的索引路由器:
var express = require('express');
var router = express.Router();
router.get('/',function(req,res,next)
{
return res.render('index', { title: 'SERVER TITLE' });
}
);
module.exports = router;
在app.js中:
app.use('/', index);
app.use('/auth', authenticate);
app.all('*',function(req,res,next)
{
if(req.isAuthenticated())
{
return next();
}
else
{
res.redirect('/login');
}
});
问题是我的客户端路由有问题,所以我的请求最终到达了服务器,最终发生了多次重定向。