私が取り組んでいるアプリには、さまざまな状態(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");
変数landingUrlは 'domain.com/login'に設定され、$ window.location.href(これは私が試したものの1つ)では機能しませんでした。ただし、コードを
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
今は動作します。