我是AngularJS的新手。另一位开发人员使用AngularJS将我们的电子商务平台整合在一起作为解决方案的一部分。我们有AngularJS构建的模态叠加,我正在转换所有AngularJS alert()以使用模态。
到目前为止,非常好,除了最后的警报() - 在登录的用户会话超时时触发的警报。我们正在使用http://adamalbrecht.com/2013/12/12/creating-a-simple-modal-dialog-directive-in-angular-js/来构建我们的模态指令,但是我无法在没有用户输入的情况下使用它 - 这些模态都是由用户单击按钮和输入触发的,但这不是由用户操作触发的。我尝试的所有内容都导致了ReferenceError:$ scope未定义
我想分享代码,但它归公司所有,所以我无法分享。只是想知道是否有人在那里放置了一个AngularJS模式,当用户登录会话超时时触发该模式,告诉他们需要重新登录。
感谢。
答案 0 :(得分:1)
这是单页应用程序中的常见问题。使用Angular,您可以使用$ http拦截器来解决它。
这个想法是,当用户需要从后端执行某些操作以重定向到登录页面或用于登录的模式对话框时,会话是否已过期。从响应本身检测到过期的会话。
示例:
.factory('httpAuthInterceptor', function ($q) {
return {
'responseError': function (response) {
// NOTE: detect error because of unauthenticated user
if ([401, 403].indexOf(response.status) >= 0) {
// NOTE: here you can trigger login modal dialog opening
return response;
} else {
return $q.reject(rejection);
}
}
};
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpAuthInterceptor');
});