我正在尝试使用angular-js,nodejs和mongodb后端的第一个应用程序。此应用及其网址由ngRoute from angular管理。在这个应用程序中有一个带有身份验证的小管理区域(基于nodejs的客户端会话)。这项工作到目前为止还不错。身份验证适用于由nodejs管理的URL,但不适用于routeProvider。提供者看起来像这样:
app.config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {
$routeProvider.when("/main",
{
templateUrl: "app/main/landing.html",
controller: "MainController"
})
.when("/admin",
{
templateUrl: "restricted",
controller: "AdminController"
})
.when("/login",
{
templateUrl: "app/login/login.html"
})
.otherwise({redirectTo: '/main'});
}]);
限制区域(/ admin)调用get到服务器并在用户有效时发送view.html:
app.get('/restricted', function (req, res) {
if (!req.session_state.user) {
res.res.status(302).redirect("/login");//Does not really work, should redirect to login, but endless loop
} else {
res.sendFile(path.resolve(__dirname + "/../views/restricted/admin.html"));
}
});
服务器的受限文件夹位于nodejs提供的静态区域之外。
问题是深层链接(直接调用'#!/ admin')时会出现无限循环。怎么解决这个问题?我已尝试使用不同的URL和状态代码。这是使用routeProvider实现身份验证的正确方法还是更好的方法?