2011-10-09 11 views
8

Tôi có một số tập lệnh PHP đăng nhập và trả về một mảng JSON có ID phiên nếu đăng nhập thành công.Chiến lược ứng dụng Android để theo dõi phiên đăng nhập

Trong ứng dụng, tôi muốn đăng nhập ở trang đầu và tiếp tục thông qua ứng dụng đang đăng nhập. Tôi đã tạo một lớp đơn chứa ID phiên (cùng với một vài trường khác) nhận được từ JSON từ Trang PHP. Trường "sing_id" của đối tượng đơn lẻ này được kiểm tra tùy thuộc vào những gì người dùng thực hiện.

Nếu người dùng muốn đăng xuất, thì session_id chỉ được đặt thành rỗng, vì vậy, hãy đăng xuất.

Tôi cũng sử dụng thư viện HttpURLConnection POST tên người dùng/mật khẩu khi đăng nhập.

Đây có phải là một cách tiếp cận đủ đàng hoàng để xử lý tình huống này?

+2

Đó cũng là cách tiếp cận tôi sử dụng, nhưng tôi cũng quan tâm đến các lựa chọn thay thế khác. –

Trả lời

24

Dưới đây là một số điều bạn nên suy nghĩ về:

  • Một khi bạn đã xác thực người dùng và lưu trữ session_id tại địa phương, gửi session_id trong tiêu đề của từng yêu cầu http của bạn. Bằng cách đó, bạn không gửi thông tin đăng nhập với mỗi yêu cầu, nhưng id phiên. Và nếu có điều gì đó xảy ra ở phía máy chủ đến phiên, giao dịch sẽ không được cho phép.
  • Khi đăng xuất, không chỉ xóa session_id ở phía ứng dụng (ứng dụng) của bạn. Gửi đăng xuất tới máy chủ để phiên có thể bị hủy phía máy chủ.
  • Nếu phiên bị giết ở phía máy chủ, bạn sẽ muốn thực hiện 1 trong 2 điều A) nhắc người dùng đăng nhập lại. B) Sử dụng thông tin đăng nhập cửa hàng để đăng nhập lại, tạo id phiên mới và lưu trữ nó một lần nữa trong singleton của bạn.

Điều này sẽ đảm bảo an ninh và chức năng hơn một chút so với chỉ xóa id phiên trên phía ứng dụng của bạn.

+1

Tôi không nghĩ rằng anh ấy đang thực hiện thêm bất kỳ yêu cầu http nào khác ngoài yêu cầu đăng nhập ban đầu. Hầu hết các chức năng của anh ta đều có vẻ cục bộ. +1 để đề cập đến cách chính xác để thực hiện yêu cầu được xác thực. –

0

Chiến lược này có thể sẽ hoạt động. Trong một ứng dụng tôi đã làm việc trên, tôi đã lưu trữ dữ liệu trả về từ đăng nhập trong các tùy chọn chia sẻ trên Android. Nếu người dùng đăng xuất, tôi đã xóa các tùy chọn. Điều này cho phép người dùng đăng nhập, ngay cả khi họ đóng ứng dụng và quay lại sau. Tôi đã có mã thông báo xác thực mà tôi đã kiểm tra để xem liệu thông tin đăng nhập của người dùng vẫn hợp lệ.

Bạn lập kế hoạch xử lý thông tin đăng nhập được lưu giữ như thế nào? SessionID có hết hạn không? Bạn có thể muốn suy nghĩ về những tình huống này nếu không một khi người dùng đăng nhập, họ sẽ đăng nhập mãi mãi hoặc miễn là ứng dụng đang mở.

+0

@ Mike L Cần sự giúp đỡ của bạn .Tôi có một dịch vụ web mà tôi có tên phương thức generateToken.Phương pháp Mã thông báo này được sử dụng để dành cho phiên làm việc của User.Meaning cụ thể đó Khi người dùng đăng nhập lần đầu tiên tôi phải lấy mã thông báo cho Người dùng đó trong một thời gian Token hợp lệ và người dùng phải nhận một mã thông báo khác sau khi mã thông báo đầu tiên hết hạn. Bạn có thể giúp tôi cách lưu trữ Mã thông báo phiên i.e Cookie dựa trên KSOAP 2 –