具有nodejs身份验证的angular routeprovider

时间:2017-10-17 17:10:55

标签: angularjs node.js ngroute

我正在尝试使用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实现身份验证的正确方法还是更好的方法?

0 个答案:

没有答案