【发布时间】:2013-12-21 12:21:01
【问题描述】:
为了处理身份验证,我使用 $locationChangeStart。我的代码适用于不包含任何参数或查询字符串的 routeProvider。如果路由提供程序包含任何查询参数,我的代码不能正常工作。
佛
app.config(['$routeProvider', function($routeProvider,$locationProvider) {
$routeProvider.when('/login', {templateUrl: 'partials/login.html', controller: 'AuthController',auth:false});
$routeProvider.when('/register', {templateUrl: 'partials/signup.html', controller: 'AuthController',auth:false});
$routeProvider.when('/', {templateUrl: 'partials/:id', controller: 'TestCntrl',auth:false});
$routeProvider.otherwise({redirectTo: '/login'});
}]).run(function($rootScope, $route, $location, AutenticationService) {
$rootScope.$on('$locationChangeStart', function(ev, next, current) {
var nextPath = $location.path();
var nextRoute = $route.routes[nextPath]
if(nextRoute.auth && !AutenticationService.isLoggedIn()){
$location.path("/login");
// event.preventDefault();
}
});
})
在上面的代码中,nextRoute 检查映射 url 并获取属性 auth,该属性存在于 $routeProvider 中。但是如果 url 包含查询参数 nextRoute.auth 给出不明确的。因为如果此身份验证不起作用。
任何想法,如果 URL 包含查询字符串,如何处理身份验证
【问题讨论】:
标签: javascript angularjs