从html iframe调用angularjs状态
我有一个带有登录机制的angular应用程序。当从html iframe调用angularjs状态,html,angularjs,iframe,Html,Angularjs,Iframe,我有一个带有登录机制的angular应用程序。当$window.sessionStorage中存储有“身份验证令牌”时,用户已登录。我在页面上包含了纯HTML iframe,显示登录用户数据和“注销”链接。此链接指向控制器的角度状态。当我单击“注销”时,我可以看到应用程序主控制器中的侦听器被触发: $scope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
$window.sessionStorage
中存储有“身份验证令牌”时,用户已登录。我在页面上包含了纯HTML iframe,显示登录用户数据和“注销”链接。此链接指向控制器的角度状态。当我单击“注销”时,我可以看到应用程序主控制器中的侦听器被触发:
$scope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
if (UserFactory.isLoggedIn()) {
//do something
} else {
//do something else
}
});
我的问题是,该应用程序无法识别用户已登录,因此“正在执行其他操作”
myUserFactory.isLoggedIn()
函数非常简单:
isLoggedIn: function () {
return 'token' in $window.sessionStorage;
}
我的注销状态定义为:
.state('app.logout', {
url: '/logout',
templateUrl: 'auth/auth.login.tpl.html',
controller: 'LogoutController',
})
它在angular应用程序中工作。如果我从iframe(非角度html)调用“注销”,我的应用程序中触发的第一件事是
$stateChangeStart
侦听器,它在$window.sessionStorage
中找不到任何“令牌”。谁能告诉我为什么?如何才能使应用程序识别用户已登录?根据“从同一窗口打开的弹出窗口可以看到会话存储,同一窗口中的iFrame也可以看到会话存储。”因此,这个问题可能与iframe$窗口中serssionStorage的使用没有直接关系。iframe中的sessionStorage
不是问题。如果用户登录,angular应用程序会保存信息,而sessionStorage中看不到“令牌”的正是此应用程序$stateChangeStart
侦听器。Iframe通过
@OrGuz指向angular应用程序:你给了我一个主意,解决了这个问题。我的iframe javascript中有$.sessionStorage.removeAll()
。这清除了存储空间,这就是为什么我的angular应用程序在存储空间中找不到任何东西。祝你好运,我的朋友