내가 작업중인 앱에는 여러 상태 (ui-router 사용)가 포함되어 있습니다. 일부 상태에서는 로그인이 필요하고 다른 상태는 공개적으로 사용 가능합니다.
사용자가 로그인했는지 여부를 유효하게 확인하는 방법을 만들었습니다. 현재 문제가있는 것은 실제로 필요할 때 로그인 페이지로 리디렉션하는 것입니다. 로그인 페이지는 현재 AngularJS 앱 내에 있지 않습니다.
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
console.log는 의도 한 URL을 올바르게 표시합니다. 그 이후의 줄은 $ window.open에서 window.location.href까지 거의 모든 것을 시도했으며 어떤 시도를하더라도 리디렉션이 발생하지 않습니다.
수정 (해결됨) :
문제를 찾았습니다.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
landUrl 변수는 'domain.com/login'으로 설정되어 $ window.location.href (내가 시도한 것 중 하나임)에서 작동하지 않습니다. 그러나 코드를 다음으로 변경 한 후
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
이제 작동합니다.