如果键入不存在的URL,则将用户重定向到主页

时间:2016-12-06 08:12:45

标签: angularjs angular-ui-router

如果用户输入的不是url,我需要将“登录”用户重定向到主页。我有一个名为“authService”的服务,我可以检查line 22: syntax error: unexpected end of file remote: An error occurred executing 'gear postreceive' (exit code: 2) remote: Error message: CLIENT_ERROR: Failed to execute action hook 'build'user auth == true

如果用户不是auth(false),我会使用$STATE.GO重定向到登录页面。

authService.auth == false

现在,当用户为app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) { $urlRouterProvider.otherwise(function ($injector, $location) { var $state = $injector.get("$state"); $state.go("login"); }); }]); 时,我希望类似于将用户重定向到主页。当用户使用令牌时,尝试键入不存在的URL,重定向到主页。

我尝试使用注入authService服务并生成if / else来执行此操作。 但这不起作用,因为我收到错误

  

错误:$ injector:unpr   未知的提供商   未知提供者:authService

auth == true

这是不好的解决方案吗?我可以向app.config注入自定义服务吗?有人可以帮帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您应该在run函数上执行此操作并使用$stateChange事件:

app.run(['$state', '$rootScope', 'authService', function($state, $rootScope, authService) {
    $rootScope.$on("$stateChangeStart", function(event, toState) {
        if (toState.name !== "home" && !authService.auth) {
            // Prevent going to the state
            event.preventDefault();
            $state.go("home");
        });
    });
}]);