Ứng dụng tôi đang làm việc chứa nhiều trạng thái khác nhau (sử dụng ui-router), trong đó một số trạng thái yêu cầu bạn đăng nhập, những trạng thái khác thì có sẵn công khai.
Tôi đã tạo một phương pháp kiểm tra hợp lệ xem người dùng đã đăng nhập hay chưa, những gì tôi hiện đang gặp vấn đề đang thực sự chuyển hướng đến trang đăng nhập của chúng tôi khi cần thiết. Cần lưu ý rằng trang đăng nhập hiện không được đặt trong ứng dụng 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 hiển thị đúng url dự định. Dòng sau đó, tôi đã thử thực tế mọi thứ từ $ window.open đến window.location.href và không có vấn đề gì tôi đã thử, không có chuyển hướng nào xảy ra.
CHỈNH SỬA (ĐÃ GIẢI QUYẾT):
Đã tìm thấy sự cố.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
Biến landingUrl được đặt thành 'domain.com/login', sẽ không hoạt động với $ window.location.href (đó là một trong những thứ tôi đã thử). Tuy nhiên sau khi đổi mã thành
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
nó bây giờ hoạt động.