2014-10-19 46 views
0

我使用的ngRouter,我的問題具有下面的代碼:Angular.js認證重定向不能與約曼角Fullstack工作

# Add Video 
.when '/videos/:action', 
    templateUrl: 'app/videos/videos-edit/videos-form.html' 
    controller: 'VideosEditCtrl' 
    authenticate: true 

# Edit video 
.when '/videos/:action/:year/:month/:slug', 
    templateUrl: 'app/videos/videos-edit/videos-form.html' 
    controller: 'VideosEditCtrl' 
    authenticate: true 

如果我去編輯視頻網頁上面,我沒有登錄,它就像我想要的那樣重定向到登錄頁面。但是,如果我對添加視頻頁面執行相同操作,瀏覽器中的網址將更改爲登錄頁面,但它仍會顯示添加視頻的視圖。

我可以從添加視頻控制器中刪除authenticate:true,它似乎以某種方式仍然使用編輯視頻驗證工作,但我不確定爲什麼或如何。

我想使用一個控制器來添加和編輯視頻,因爲代碼非常相似。我的路由有問題嗎?我應該把控制器分開嗎?

回答

0

在app.js中添加'preventDefault()'。

//before 
.run(function ($rootScope, $location, Auth) { 
// Redirect to login if route requires auth and you're not logged in 
$rootScope.$on('$stateChangeStart', function (event, next) { 
    Auth.isLoggedInAsync(function(loggedIn) { 
    if (next.authenticate && !loggedIn) { 
     $location.path('/login'); 
    } 
    }); 
}); 

//after 
.run(function ($rootScope, $location, $state, Auth) { 
// Redirect to login if route requires auth and you're not logged in 
$rootScope.$on('$stateChangeStart', function (event, next) { 
    Auth.isLoggedInAsync(function(loggedIn) { 
    if (next.authenticate && !loggedIn) { 
     event.preventDefault(); 
     $location.path('/login'); 
    } 
    }); 
});