- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
The stateless web application seems promising .如何制作一个?特别是对于 Spring WebMvc?有什么指导方针吗?
以下是我的一些想法:
添加 1
我认为这不是是否保留状态信息的问题。如果您想做一些有用的事情,状态信息始终是必需的。这实际上是一个问题,在哪里/如何保存状态信息。这article很有用。它提到了进程内/进程外 session 、数据缓存以及为什么不使用 session 。
相关:
Use Spring MVC for Stateless web application development (暂无回应)
How to make a java web application fully stateless
How do I make my Web Application stateless yet still do something useful?
http://brockallen.com/2012/04/07/think-twice-about-using-session-state/
最佳答案
这里有一些贡献。我不熟悉 Java 和 Spring,但我相信无论您的技术堆栈如何,这些指南都是有效的。
正如您在问题中预期的那样,避免使用 session 来验证用户身份。 session 是强制性的,很难在分布式、可扩展的基础架构中一致地复制它。
此外,负载平衡器不能很好地处理 session :参见 Problem with Session State timeing out on Load Balanced Servers .
无状态应用程序最好使用基于 token 的身份验证系统。 Firebase是一个很好的例子。将从 token 中提取的不可变用户 ID 映射到您要使用的任何存储机制中持久保存的用户数据。由于此用户 ID 不会更改,因此您可以在分布式数据库中使用。
有时人们认为,通过将用户 ID 映射到数据库中的用户数据,您正在制作一个有状态的应用程序。这不是真的。让我说清楚:
将用户信息保存在数据库中并对经过身份验证的用户进行动态响应的应用程序不一定是有状态的。无状态意味着应用不必在多个服务器之间分发可变身份验证 session ,也不会根据 session 数据将其内部状态更改为特定客户端。
无状态的诀窍是:一旦用户通过登录验证其 token ,服务器就不必在数据库服务器之间分发任何新内容,也不会更改其状态到该客户端。它可以从 token 中提取用户信息并执行响应请求所需的操作。如果 token 过期,客户端将需要新的身份验证,这将生成一个新的 token ,但这与应用服务器隔离,因为用户 ID 将保持不变。
如果在 cookie 中缓存一些经常请求的数据会提高性能,那很好,继续缓存。只需确保 cookie 未连接到任何服务器状态,如果客户端丢失 cookie,您的应用程序就不会中断。
关于spring - 如何制作无状态的 Web 应用程序?特别是对于 Spring MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651801/
我已经可以在其中输入一些附加文本了mydomain/wiki/Special:UserLogin。我添加了一句话: In order to apply for an account send an m
有人可以解释以下脚本输出背后的逻辑吗? import numpy if(numpy.dtype(numpy.float64) == None): print "Surprise!!!!" 谢谢
是我还是 gmail bulls**t?在 outlook/浏览器上,我的电子邮件是完美的,但在 gmail 上,2 个表之间有一个空间,为什么?!?图片:http://i.imgur.com/srJ
我是一名优秀的程序员,十分优秀!