Tôi đang tìm cách thực hiện hai điều này, trước tiên tôi muốn chuyển hướng người dùng đến trang đăng nhập nếu không tìm thấy SessionID và thứ hai tôi muốn nghe ý kiến về việc duy trì ID phiên trong bộ nhớ chỉ (không có cookie).AngularJS - Chuyển hướng đến trang Đăng nhập và Độ bền của ID phiên
Các giải pháp tôi đã đưa ra để chuyển hướng là:
1 - Tạo một dịch vụ gọi là OAuth rằng sẽ kiểm tra nếu SessionID tồn tại và nếu không, chuyển hướng đến trang đăng nhập, dịch vụ cũng chịu trách nhiệm về đăng nhập và phương thức đăng xuất.
app.factory('OAuth', ['$http', function ($http) {
var _SessionID = '';
return {
login: function() {
//Do login ans store sessionID in var _SessionID
},
logout: function() {
//Do logout
},
isLoggedIn: function() {
if(_SessionID) {
return true;
}
//redirect to login page if false
}
};
}]);
2 - Tiêm dịch vụ OAuth mới trong mỗi bộ điều khiển và kiểm tra xem người dùng isLoggedIn
app.controller('myCtrl', ['$scope', 'OAuth', function ($scope, OAuth) {
//check if user is logged
OAuth.isLoggedIn();
}]);
Câu hỏi:
1 - Phương pháp isLoggedIn() sẽ được gọi trong tất cả các bộ điều khiển, vì vậy Tôi tự hỏi nếu có một cách để làm điều này mà không cần phải tiêm dịch vụ và gọi nó trong mỗi bộ điều khiển.
2 - Thay vì có cookie để lưu sessionID, tôi muốn lưu nó trong biến _SessionID của OAuth và cho mỗi yêu cầu gửi nó đến máy chủ. Đây có phải là cách tiếp cận khả thi/an toàn không? Bạn có thể cho tôi một số ý tưởng cho điều đó không?
Cảm ơn!
Tốt. Cảm ơn Dan! – Bema
Việc [viết về cách tiếp cận] (http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application) cũng rất hữu ích. –