如果用户未登录,我正在尝试创建会话重定向。代码正如我预期的那样工作。但是,当我在控制台上查看时,会发生错误(如标题中所示)。我似乎无法解决这个问题,我需要一些帮助。
var domainName = window.location.href;
var domainName = domainName.split("/");
var domainName = domainName[0] + "//" + domainName[2];
var app = angular.module("app", []);
app.run(run);
run.$inject = ["$window", "$rootScope", "$cookies"];
function run($window, $rootScope, $cookies){
// Runs everytime the URL changes
$rootScope.$on('$locationChangeStart', function(event, current, previous) {
// If the user is not logged-in and is not trying to access the register or log-in, It will go back to the log-in page
// if(!$cookies.get('user') && current != domainName+"/#/"){
if(current != domainName+"/#/"){
$window.location.href = domainName+"/#/";
// Create a scope that will remind the users regarding the session
// $rootScope.sessionError = "Please Enter Exam Code before taking the exam";
}
});
}
答案 0 :(得分:1)
如错误消息所述,您将面临无限循环。
当事件$locationChangeStart
被触发时,您检查该网址并重定向到另一个网页。当您重定向时,网址会再次更改,再次触发$locationChangeStart
,依此类推。
您需要找到另一种方法来验证用户是否已登录。
我不知道它是否会起作用,但请尝试检查current
是否与previous
不同。
$rootScope.$on('$locationChangeStart', function(event, current, previous) {
if(current !== previous && current != domainName+"/#/"){
$window.location.href = domainName+"/#/";
}
});
我建议您使用$ location更改网址。
Docs
Related post