2012-11-18 42 views
8

Tôi đang tạo ứng dụng web ngoại tuyến nhắm mục tiêu iPhone và các thiết bị di động khác. Có cách nào chúng ta có thể giữ cho xác thực người dùng được lưu bằng cách sử dụng lưu trữ cục bộ WebSql không?Làm cách nào để đăng nhập người dùng cho ứng dụng web ngoại tuyến?

Vì vậy, khi bạn mở ứng dụng web trong khi nó ẩn, tôi muốn Hoặc người dùng phải đăng nhập đã hoặc người dùng sẽ có thể đăng nhập.

+2

Câu hỏi thú vị, điều đó có nghĩa là bạn sẽ phải lưu trữ thông tin xác thực người dùng cục bộ mà không phải là rất an toàn. Tự hỏi liệu có cách nào an toàn hay cách thực hành tốt nhất để đạt được điều này. –

+1

Chỉ cần một cái gì đó để suy nghĩ về - nếu kiểm tra các thông tin xác thực, theo định nghĩa, thực hiện trên máy khách trong javascript, nó sẽ là tầm thường cho một ai đó để thi đua/bỏ qua xác thực bởi tài sản jiddling trong ứng dụng. Giả sử, ví dụ, dữ liệu phía máy khách được đồng bộ hóa với máy chủ khi bạn trực tuyến trở lại, nó có thể gây ra vấn đề. – user888734

Trả lời

1

Nếu tôi hiểu câu hỏi một cách chính xác, đây là cách bạn có thể làm điều đó:

Khi đăng nhập (trực tuyến):

  • Authenticate chống lại các máy chủ, nếu nó đúng, lưu trữ tên người dùng và mật khẩu băm (ví dụ sử dụng Crypto JS) trong cơ sở dữ liệu WebSQL.
  • Nếu tài khoản đã tồn tại trong cơ sở dữ liệu cục bộ, hãy tạo một mã băm mới trong trường hợp người dùng đã thay đổi mật khẩu của mình kể từ lần đăng nhập cuối cùng.

Khi đăng nhập (ẩn):

  • Authenticate chống lại cơ sở dữ liệu địa phương.

Điều này, tất nhiên, yêu cầu người dùng đăng nhập bằng phiên bản trực tuyến ít nhất một lần trước khi đăng nhập cục bộ. Đây là cách ví dụ Windows 8 làm điều đó khi ai đó cố gắng đăng nhập vào tài khoản Microsoft của họ trong khi ngắt kết nối.

1

Tôi không biết cách lưu trữ hoặc sử dụng dữ liệu trạng thái khách hàng (keychain in iOS cũng trong Android), nhưng đối với phối cảnh ứng dụng web, bạn không phải làm gì cả. Bạn không phải làm bất cứ điều gì bởi vì nếu bạn có thể nó không an toàn. Sau khi đăng nhập, máy chủ sẽ đặt HTTP only cookie hoạt động trong một số ngày hoặc vài tuần. Trong thời gian này, yêu cầu with credentials đến máy chủ luôn được xác thực bởi trình duyệt. Bạn có thể yêu cầu email đăng nhập hoặc bất kỳ thứ gì từ máy chủ. Đối với máy chủ mục đích bảo mật bổ sung có thể yêu cầu XSRF token. Trong trường hợp đó, lưu nó trong localStorage. Mất mã thông báo này có nghĩa là không nhiều.

Đây là cách an toàn nhất và nó cũng được sử dụng bởi khách hàng di động bao gồm cả ngân hàng qua internet qua WebView. Sử dụng trình duyệt để xác thực là an toàn nhất và dễ dàng nhất vì có nhiều điểm yếu như lưu trữ thông tin đăng nhập, kiểm tra chứng chỉ ssl đúng, mã hóa, v.v. Với chế độ xem web, mọi thứ được trình duyệt chăm sóc.

Nếu bạn quan tâm đến cách các mã máy chủ này, tôi đã giải thích với Appengine cross domain authentication server code.

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