使用首先运行特定代码

时间:2016-06-16 17:31:35

标签: c# angularjs visual-studio configuration

2 个答案:

答案 0 :(得分:1)

配置块非常适合可能对您有用的两段代码。

首先,您可以使用它来注入$ http拦截器,该拦截器将处理失败的身份验证调用和重定向。

angular.module("app", [])
    .config(function ($httpProvider) {
        $httpProvider.interceptors.push("authInterceptor");
    });

你可以把这个 $ http intercepter 写成一个名为' authInterceptor'的工厂。 (未示出)。更多here,但重点是它可以从$ http响应中查找某些状态代码,例如401,并根据需要重定向到您的错误页面

根据您使用的路由,您可以使用路由解析属性来保持加载路由,直到数据得到解析。如果被拒绝,您创建的拦截器将重新路由

angular.module("app", [])
    .config(function ($routeProvider, $httpProvider, $http) {
        $routeProvider
            .when('/', {
                controller:'MainCtrl',
                template:'<h1>Hello!<h1>',
                resolve:{
                    userData: return $http.get('/api/authentication');
                }
            });
        $httpProvider.interceptors.push("authInterceptor");
    });

最后一种选择是运行块,而不是进行初始身份验证调用。运行块在配置之后但在您的应用加载之前运行。

angular.module("app", [])
    .config(function ($routeProvider, $httpProvider, $http) {
        $httpProvider.interceptors.push("authInterceptor");
    })
    .run(function ($http) {
        $http.get('/api/authentication');
    });

我不会尝试运行此代码。你必须编写intercepter服务。你必须加载一个路由器模块等。希望这有点帮助。

答案 1 :(得分:0)

$.ajax角度取代$http并等待承诺电话:

var checkUserlogin = function() {
    return $http.get(serviceURL_CheckUserExists)
           .then(function (response) {
                if (response.Results.length == 1 && response.Results[0].BlockUser == false) {
                    return response.Results[0].User_ID.trim();
                } else {
                    return null; // could not login
                }
           });
};

PS:我没有测试过此代码,如果您收到任何错误,请告诉我。