我最近從UI-Router v0.4.2升級到v1.0.0 RC1。登錄後重定向回原始狀態 - 帶參數
我用$ rootScope工作。在$(「$ stateChangeStart」,函數(..捕捉necesary數據要能回重定向到原來的頁面請求的用戶登錄後。
自從升級到v1.0.0以來,我一直在努力尋找一些可行的方法。獲取狀態名稱本身就有點麻煩,但實際上獲取url參數是另一回事。
我已閱讀Docs and API info about the injectables and Transitions and States。Sample App似乎只針對基本的重定向(僅基於州名)
顯然,我錯過了一些東西。 請注意,參數可以有所不同。
$transitions.onBefore({
to: function (state) {
return globals.anonymousStates.indexOf(state.name) == -1;
}
}, function (transition) {
return LoginService.isAuthenticatedV2(transition, "account.login");
});
globals.anonymousStates包含狀態(字符串)不需要認證(目前兩頁:account.login,account.forgotpassword)的列表。
的LoginService.isAuthenticatedV2包含以下代碼:
loginService.isAuthenticatedV2 = function (trans, redirectTo) {
return $http.get('/Account/IsAuthenticated').then(function (result) {
if (result.data.authenticated === true) {
return trans;
} else {
return trans.router.stateService.target(redirectTo);
}
}, function (error) {
return trans.router.stateService.target(redirectTo);
})
}
簡而言之:當用戶直接針對需要身份驗證的URL,他被重定向到account.login狀態。登錄後,我想將他重定向到原始請求,包括所有url參數(一個id,類型,搜索,...)
示例url:www.dummy.com/customer?id=007 &類型=債券&搜索=詹姆斯
任何人都可以提供一些關於如何解決這個問題的幫助?
編輯 我試圖獲得最後的「有效」狀態就是這樣,得到名稱,如能正常工作(如預期),但抓住了params爲不工作。
// copy the last valid redirectable state to the global service.
$transitions.onBefore({
to: function (state) {
if (globals.anonymousStates.indexOf(state.name) == -1) {
globals.lastValidState = angular.copy(state);
}
return false;
}
}, angular.noop);