Ví dụ: khi người dùng có login.Now cho phép người dùng muốn tạo chủ đề diễn đàn, Làm cách nào để biết người dùng đã đăng nhập?
Hãy nghĩ về điều đó - phải có một số bắt tay cho biết API "Tạo diễn đàn" của bạn rằng yêu cầu hiện tại này là từ người dùng được xác thực. Vì các API REST thường không có trạng thái, trạng thái phải được giữ nguyên ở đâu đó. Ứng dụng khách của bạn sử dụng API REST chịu trách nhiệm duy trì trạng thái đó. Thông thường, nó ở dạng một số mã thông báo được chuyển đi từ khi người dùng đăng nhập. Nếu mã thông báo tốt, yêu cầu của bạn tốt.
Kiểm tra cách Amazon AWS thực hiện xác thực. Đó là một ví dụ hoàn hảo về "truyền buck" xung quanh từ API này sang API khác.
* Tôi đã nghĩ đến việc thêm một số câu trả lời thực tế vào câu trả lời trước đây của tôi. Hãy thử Apache Shiro (hoặc bất kỳ thư viện xác thực/ủy quyền nào). Tóm lại, hãy thử và tránh mã hóa tùy chỉnh.Một khi bạn đã tích hợp thư viện mà bạn yêu thích (tôi sử dụng Apache Shiro, btw) sau đó bạn có thể làm như sau:
- Tạo Login/logout API như:
/api/v1/login
và api/v1/logout
- Trong những Login và Logout API, thực hiện xác thực với cửa hàng sử dụng bạn
- kết quả là một dấu hiệu (thường,
JSESSIONID
) được gửi lại cho khách hàng (web, điện thoại di động, bất cứ điều gì)
- Từ thời điểm này trở đi, tất cả các cuộc gọi tiếp theo được thực hiện bởi khách hàng của bạn sẽ bao gồm mã thông báo này
- Hãy nói rằng cuộc gọi tiếp theo của bạn được thực hiện cho một API gọi
/api/v1/findUser
- Điều đầu tiên mã API này sẽ làm là để kiểm tra sự token ("là thành viên này xác nhận?")
- Nếu câu trả lời trở lại là KHÔNG, sau đó bạn ném Trạng thái HTTP 401 quay lại máy khách. Hãy để họ xử lý nó.
- Nếu câu trả lời là CÓ, sau đó tiếp tục trả lại Người dùng được yêu cầu
Đó là tất cả. Hi vọng điêu nay co ich.
Bạn có lẽ nên tìm kiếm "REST authentication" ở đây. Nó được đề cập trong nhiều câu hỏi khác. –
Tóm lại, hãy để khách hàng gửi tên người dùng và mật khẩu với mọi yêu cầu bằng HTTP Basic Auth (qua SSL!) Hoặc xác thực một lần để khách hàng có phiên được xác thực sẽ hết hạn sau một khoảng thời gian không hoạt động (hoặc bạn chọn ghi đè lên 'xử lý phiên' của khung công tác web của bạn. Phiên nói sau đó có thể được lưu trữ trong cookie hoặc là thông số được chuyển với mọi yêu cầu (ví dụ: JSESSIONID trong vùng Java). – opyate
Xem thêm [Cách kiểm soát ai sử dụng tiện ích web của tôi] (http://stackoverflow.com/questions/12998701/how-to-control-who-uses-my-web-widget/). – Arjan