Tôi đang cố gắng hiểu token-based authentication
những ngày này, tuyên bố là phương thức stateless authentication
. Và tôi đã gặp khái niệm về stateless web application
.Ứng dụng web không quốc tịch, một huyền thoại đô thị?
Dưới đây là một số bài tôi đọc về:
- Use Spring MVC for Stateless web application development (không có phản ứng chưa)
- Stateless Spring MVC
- How to make a java web application fully stateless
- How do I make my Web Application stateless yet still do something useful?
Lúc đầu, tôi đã vui mừng ở đây ý kiến. Nhưng ngày càng nhiều, tôi nghĩ rằng stateless
là pseudo-proposition
. Ví dụ: giả sử chúng tôi sử dụng mã thông báo do khách hàng lưu trữ để xác thực, làm cách nào chúng tôi có thể thống kê người dùng trực tuyến (giả sử không có nhật ký)? Chúng ta sẽ lưu mã thông báo trong DB? Điều đó không có nghĩa là chúng tôi lưu trữ thông tin trạng thái trên máy chủ? Và thậm chí nhiều hơn, là thông tin người dùng đơn giản như tên, tuổi, vv trong DB cũng có một số loại thông tin trạng thái?
Tôi nghĩ câu hỏi thực sự ở đây không phải là làm cho một ứng dụng web không quốc tịch, nhưng để làm cho ứng dụng web xử lý đúng thông tin trạng thái sao cho nó sẽ không gây nguy hiểm cho khả năng mở rộng.
đó phụ thuộc vào cách giải thích từ stateless
:
- ứng dụng Web không có nhà nước.
- Hoặc ứng dụng web không lưu trữ trạng thái chính nó.
Tôi thích 2 vì luôn có thể có một số inevitable global state
(được trích dẫn từ nhận xét của @ deceze cho câu trả lời của anh ấy). Và bất kể chúng tôi lưu trữ thông tin trạng thái dưới dạng lưu trữ web HTML 5 hoặc tiêu đề HTTP hoặc trường biểu mẫu ẩn hoặc Cookie, trạng thái vẫn tồn tại. Chỉ rằng nó được lưu trữ ở đâu đó khác với trên máy chủ.
Tôi có thiếu thứ gì đó tuyệt vời không? Ai có thể làm sáng tỏ điều này để tôi có thể thoát khỏi cuộc đấu tranh tinh thần này?
ADD 1
Chỉ cần đọc về cuốn sách RESTful Web Services bởi Leonard Richardson
. Trong chương 4, ở cuối phần Statelessness
, nó phân loại trạng thái thành Application State
và Resource State
. Vì vậy, thông tin người dùng đơn giản và dữ liệu tôi đã đề cập trước đây như hình ảnh, v.v ... có thể được phân loại là Resource State
. Và những gì stateless
đề cập đến là Application State
. Vì vậy, nó không phá vỡ mã không quốc tịch để lưu trữ resource state
trên máy chủ.
Nhưng cuốn sách cũng đề cập đến trường hợp trong đó an application key is used to restrict how many times a user can invoke a web service.
Nó thừa nhận rằng thông tin đó không thể được lưu trữ ở phía máy khách. Và phải lưu trữ nó ở phía máy chủ sẽ phá vỡ mã không quốc tịch và giới thiệu vấn đề về mối quan hệ phiên. Nó tuyên bố không quốc tịch có thể tránh vấn đề quan hệ phiên nhưng không giải thích như thế nào.Tôi thực sự không thấy trạng thái phi trạng thái có thể xử lý tình huống này như thế nào. Bất cứ ai cũng có thể làm sáng tỏ ở đây?
Ứng dụng web không trạng thái là gì? Bạn lấy từ đó từ đâu? Tôi chỉ biết kết nối/giao thức không quốc tịch. – freakish
@freakish cảm ơn bạn đã trả lời. Tôi đọc nó từ một số chủ đề. Tôi tóm tắt một vài ở đây: http://stackoverflow.com/questions/34651801/how-to-make-stateless-web-applications-especially-with-spring-mvc – smwikipedia
Tôi nghĩ rằng nếu bạn viết ra danh sách các nhược điểm statefull bạn sẽ có thể xác định những gì không trạng thái, phải không? Nhưng những nhược điểm đó là chủ quan, đó là lý do tại sao không có định nghĩa rõ ràng. –