24

我正在努力为我正在创建的应用程序设置登录系统。

我可以为用户登录或注销时设置 cookie。我不认为在用户登录的情况下测试每个视图是一个非常优雅的解决方案,我担心这里和那里的页面可能会落入裂缝(这是一个相当大的应用程序)。

我认为最好的方法是以某种方式拦截路由更改并检查用户是否已登录,否则将它们发送到登录/创建用户页面。我找到了一些方法,但似乎没有正式记录。有没有人在现实世界的案例中使用过这种方法,它有效吗?

我的路由文件如下所示:

'use strict';

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        // LOGIN
        .when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl'})

    ....... more routes here.......

        // DEFAULT
        .otherwise({redirectTo: '/'});
}]);

任何帮助或建议,或指向记录在案的真实世界示例,我将如何做这样的事情将不胜感激!

4

2 回答 2

29

您可以按照您的建议拦截路线更改并采取相应的行动,使用以下示例作为基础:

    $rootScope.$on('$routeChangeStart', function (event, next) {
        var userAuthenticated = ...; /* Check if the user is logged in */

        if (!userAuthenticated && !next.isLogin) {
            /* You can save the user's location to take him back to the same page after he has logged-in */
            $rootScope.savedLocation = $location.url();

            $location.path('/User/LoginUser');
        }
    });

另外,添加isLogin: true到登录页面的路由定义中,如下所示:

$routeProvider
    // LOGIN
    .when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl', isLogin: true})

祝你的项目好运!

于 2013-09-20T17:26:41.143 回答
-17

我的意见:

<?php if (!$_SESSION['user_id'] { forward(/user/access); }) ?>

这是你的角度应用程序......

于 2014-03-25T05:22:09.107 回答