gpt4 book ai didi

c# - 处理 session 以实现可伸缩性

转载 作者:太空狗 更新时间:2023-10-29 23:31:58 26 4
gpt4 key购买 nike

我目前正在制作一个非常面向数据库的网站,有点像 Stack Overflow。我的问题是如何处理将跨多个服务器传输的 session (我计划使用 AWS 服务器进行自动缩放)。

目前我认为我不应该出于可扩展性和速度目的使用表单例份验证。相反,我会在数据库中有一个名为 session 的表,它存储以下信息:SessionID、UserID、ExpDate、CreateDate、IP、Status('LogedIn'、'LogedOut'、'Expired')。

从 cookie 的角度来看,我最担心的是安全性,而且当我有很多服务器在运行时,我没有看到瓶颈情况的经验。

请提供您的见解。我还想知道其他人和 Stack Overflow 是如何处理这个困境的。

仅供引用:出于同样的原因,我使用 PetaPoco 而不是 Entity Framework,因为这样做可以缩短大约 600 毫秒。

感谢您的帮助!

最佳答案

我不知道使用 Forms Authentication 有任何可伸缩性问题。本质上,它将授权 token 加密到 cookie 中,并且在每次请求时将 cookie 呈现给服务器。使用 cookie 而不是进程内 session 确实允许可扩展性,因为它不依赖于任何一个特定的服务器。

加密使用存储在服务器上的 machineKey 值,因此破解加密需要获取 machineKey。

一般来说,我尽量不实现自己的授权,而是尝试坚持使用已经过测试的开箱即用的解决方案。

您使用 session 存储的方法仍然需要使用 cookie 来存储某种指向 session 存储的指针。根据您的实现,可能很容易猜到此信息并很容易冒充其他人。

编辑:

由于您在 AWS 上运行,我建议您利用 ElastiCache 来减少数据库命中数。

关于c# - 处理 session 以实现可伸缩性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com