Ví dụ: khi người dùng đã đăng nhập. Làm thế nào để nói người dùng muốn tạo chủ đề diễn đàn, làm sao tôi biết rằng người dùng đã đăng nhập?
Hãy suy nghĩ về nó - phải có một cái bắt tay nói với API "Tạo diễn đàn" của bạn rằng yêu cầu hiện tại này là từ một người dùng được xác thực. Vì API REST thường không trạng thái, trạng thái phải được duy trì ở đâu đó . Khách hàng của bạn sử dụng API REST có 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 qua kể từ thời điểm người dùng đăng nhập. Nếu mã thông báo tốt, yêu cầu của bạn là 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ề việc "vượt qua" từ API này sang API khác.
* Tôi nghĩ đến việc thêm một số phản ứng thực tế cho 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). Tóm lại, hãy thử và tránh mã hóa tùy chỉnh. Khi bạn đã tích hợp thư viện yêu thích của mình (tôi sử dụng Apache Shiro, btw), bạn có thể thực hiện các thao tác sau:
- Tạo API đăng nhập / đăng xuất như:
/api/v1/login
vàapi/v1/logout
- Trong các API Đăng nhập và Đăng xuất này, hãy thực hiện xác thực với cửa hàng người dùng của bạn
- Kết quả là một mã thông báo (thông thường,
JSESSIONID
) được gửi lại cho khách hàng (web, 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
- Giả sử cuộc gọi tiếp theo của bạn được thực hiện với API được gọi
/api/v1/findUser
- Điều đầu tiên mà mã API này sẽ làm là kiểm tra mã thông báo ("người dùng này có được xác thực không?")
- Nếu câu trả lời trở lại là KHÔNG, thì bạn ném Trạng thái HTTP 401 lại cho máy khách. Hãy để họ xử lý nó.
- Nếu câu trả lời là CÓ, thì hãy tiến hành trả lại Người dùng được yêu cầu
Đó là tất cả. Hi vọng điêu nay co ich.