Tôi đang xây dựng một ứng dụng AngularJS tương tác với một API sử dụng mã thông báo xác thực để xác thực người dùng. Tất cả mọi thứ dường như được làm việc tốt, nhưng tôi đang đấu tranh với một cách để duy trì đúng mã thông báo xác thực giữa các yêu cầu.Mã xác thực bền vững trong AngularJS
Hiện tại, khi người dùng đăng nhập bằng thông tin xác thực chính xác, authToken
được trả về và tôi đang đặt số đó trên $rootScope.authToken
. Tôi cũng gửi mã thông báo xác thực đó cho các yêu cầu trong tương lai, nhưng nếu tôi tải lại tải lại trang web với F5 $rootScope
bị xóa và tôi phải xác thực lại.
Tôi biết mình có thể lưu authToken trong cookie, nhưng đó có phải là cách an toàn nhất không? Tôi có nên sử dụng bộ nhớ cục bộ để lưu trữ mã thông báo không? Nếu lưu trữ cục bộ được sử dụng, điều đó sẽ không bị xóa khi người dùng khởi động lại trình duyệt của họ không? Tôi lý tưởng như đăng nhập để tồn tại trong một vài ngày.
Trong trường hợp đó, có thể chấp nhận mã hóa mã thông báo đăng nhập ở phía máy chủ trước khi nó được gửi tới người dùng để họ lưu trữ phiên bản được mã hóa không? Sau đó, khi mã thông báo được gửi đến máy chủ, nó sẽ được giải mã và kiểm tra để đảm bảo nó hợp lệ vv. Không có vấn đề gì về việc thu hồi tất cả phiên người dùng, chúng được lưu trữ trong bảng và mọi yêu cầu của khách hàng đều được kiểm tra. Nếu tôi xóa bảng, mọi người sẽ đăng xuất :) –
Có, chắc chắn mã hóa phía máy chủ và kiểm tra lại nó theo từng yêu cầu API mà máy chủ nhận được. Đó là mô hình an toàn nhất để sử dụng như một cổng bảo mật cơ bản. Vẫn còn một vài vấn đề với cách tiếp cận này và tôi khuyên bạn cũng nên thiết lập một mã thông báo CSRF (ngoài giá trị 'authToken' của bạn). AngularJS hỗ trợ mã thông báo thứ cấp này nguyên bản và điều này sẽ thêm một rào cản khác cho ứng dụng của bạn. Xem qua các tài liệu về XSRF tại đây: https://docs.angularjs.org/api/ng/service/$http –
Thật tuyệt vời, cảm ơn. –