này được thiết lập khá thẳng về phía trước của bạn, tôi có một đánh chặn http rằng đang tìm kiếm 401s, nếu tìm thấy người dùng sẽ được chuyển hướng đến trang đăng nhập:
function($location, $q)
{
return {
request: function (config) {
return config || $q.when(config);
},
requestError: function(request){
return $q.reject(request);
},
response: function (response) {
return response || $q.when(response);
},
responseError: function (response)
{
if (response && response.status === 401)
{
$location.path('/login');
}
return $q.reject(response);
}
};
}
Các vấn đề là cuộc gọi $location.path('/login')
dường như không hoạt động, đường dẫn hoàn toàn bị bỏ qua và tôi vẫn ở trên tuyến đường (mặc dù trang trống) tôi đã bật khi phiên của tôi hết hạn. Một cách giải quyết khác là sử dụng số window.location = '/#!/login';
truyền thống nhưng tôi thấy điều này ít hơn lý tưởng. Tôi cũng thấy rằng nếu tôi loại bỏ các dòng return $q.reject(response);
tôi nhận được nó làm việc, NHƯNG này giới thiệu một lỗi mà không tìm thấy thuộc tính dữ liệu của phản ứng (giải pháp được thảo luận ở đây: Angular.js $http.post TypeError: Cannot read property 'data' of undefined).
Tôi đang chạy góc 1.2.21.
Mọi ý tưởng về những gì có thể xảy ra ở đây? Hoàn nguyên để window.location không phải là kết thúc của thế giới nhưng tôi rất thích một giải pháp gọn gàng tốt đẹp cho bí ẩn này :).
Xin cảm ơn trước.
Câu hỏi liên quan: http://stackoverflow.com/questions/19499323/location-path-doesnt-change-in-a-factory-with-angularjs – Sirozha