2013-07-06 29 views
13

BỐI CẢNH NHANH:Tôi có thể sử dụng html5 lưu trữ cục bộ để lưu trữ thông tin người dùng phiên xác thực

Tôi đang viết một Mongo/Express/góc/Node SPA và sử dụng hộ chiếu tôi đã thiết lập bản ghi OAuth trong các tùy chọn để xử lý xác thực người dùng/ủy quyền.

Với hộ chiếu, tôi đang duy trì thành công phiên trên máy chủ, vì vậy tất cả các yêu cầu XHR của tôi (cần nó) đang kiểm tra người dùng đã đăng nhập.

Khi đăng nhập máy chủ, hãy đưa thông tin phiên người dùng cơ bản vào cookie để khách hàng tìm thấy trên gọi lại ủy quyền, sau đó tôi đang sử dụng cookie Cookie $ của angular-cookie để truy cập cookie đó trên máy khách lưu nó vào rootscope và xóa cookie.

VẤN ĐỀ:

này đang làm việc một cách hoàn hảo, ngoại trừ đối với bất kỳ sự kiện mà người dùng làm mới trình duyệt, khiến phiên rootscope tôi để rõ ràng được xóa sổ.

Vì vậy, tôi đã xem xét lưu trữ thông tin phiên trong bộ nhớ cục bộ của trình duyệt (sử dụng store.js), ngay cả khi tải ban đầu, tôi có thể kiểm tra phiên hiện có trong bộ nhớ cục bộ của trình duyệt và bỏ qua thông tin đăng nhập OAuth nếu đã có phiên.

Thực tiễn không hay là có một số vấn đề về hậu cần/bảo mật với việc lưu trữ thông tin phiên người dùng trong bộ nhớ cục bộ của trình duyệt?

Ứng dụng này không có dữ liệu senstive, đăng ký miễn phí và đăng nhập thực sự chỉ ở đó để tôi có thể theo dõi người dùng và lưu trữ dữ liệu được tạo trong ứng dụng cho từng người dùng. Và phiên người dùng sẽ không bao giờ có mật khẩu (tôi chỉ cho phép đăng nhập OAuth không có tùy chọn cục bộ).

+0

phụ thuộc. nhưng đảm bảo rằng tôi không thể sửa đổi bộ nhớ cục bộ của mình để tạo thông tin đăng nhập hợp lệ trên trang web của bạn. điều đó thật khó chịu. –

+0

tôi sẽ chỉ lưu trữ id phiên và tôi có thể lưu trữ trong cookie. –

+0

@MarkusMikkolainen Cookie có phải là một lựa chọn tốt hơn vì khả năng đi vào và sửa đổi các đối tượng trong localstorage không? –

Trả lời

6

Thay vì localStorage, nhìn vào sessionStorage đối tượng: http://www.w3schools.com/html/html5_webstorage.asp

Nó hoạt động giống hệt như localStorage, nhưng toàn bộ đối tượng sessionStorage sẽ bị xóa khi cửa sổ trình duyệt được đóng - nhưng sẽ tồn tại bất kỳ làm mới trang. Đây là một nơi lý tưởng để lưu trữ id phiên và giống nhau.

Nhưng được cảnh báo rằng sessionStorage bị cô lập trong tab trình duyệt - điều đó có nghĩa là nếu người dùng của bạn chọn mở liên kết trong tab mới, thì sessionStorage sẽ được khởi chạy trống.

+5

Còn autologin thì sao? Hoặc đăng nhập liên tục? – CMCDragonkai

Các vấn đề liên quan