c# - asp.net mvc Azure 云服务,我应该使用 TempData 还是 Sessions 来保存一些用户信息或其他信息

标签 c# asp.net asp.net-mvc session azure

我正在开发一个将托管在 azure 云服务上的网站。我想知道保存登录用户的一些信息(基本上是一些 ID 和列表/字典)的最佳方法。

该应用程序可以部署在多个实例上。我确信静态变量不是解决方案。

那么使用 Sessions 是否安全,我应该使用 TempData (使用 peek 方法还是只是创建一个将使用 peek 方法的包装类)还是其他方法?

基本上我想避免调用数据库来检索相同的数据,因为它本身是通过网络服务访问的。

最佳答案

存储在 TempData 中的数据将在下一个请求中被清除,它只是一个临时存储(例如,当您想在重定向时维护数据时),因此它不是放置对整个 session 有效的数据的好地方

正常登录成功后,用户信息有两种存储方式:

  • 使用 session :它是安全的,因为数据存储在服务器上(如果使用进程内 session )或另一台服务器上(如果使用分布式 session )。对于云,您应该使用 Azure 缓存服务或 Azure Redis 作为 session 提供程序
  • 如果用户信息量较少,可以将其序列化并放入认证cookie中。在每次请求时,客户端都会向服务器发送 cookie,服务器会将数据反序列化为自定义主体并存储为当前用户。缺点是cookie的大小相对第一种方法会更大,因此仅在信息量较小时使用它。而且它也是安全的,因为 cookie 会被加密

关于c# - asp.net mvc Azure 云服务,我应该使用 TempData 还是 Sessions 来保存一些用户信息或其他信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533071/

相关文章:

c# - ASP.net 中的浏览器滚动条(如何设置)

c# - ASP.NET MVC 自定义错误处理 Application_Error Global.asax?

c# - 如何适配Grid导出Excel的列宽?

c# - 具有角色的 WCF PrincipalPermission,为子方法配置

asp.net - 与本地机相比,为什么 Azure 上的 SQL Server 数据库从虚拟机的响应速度较慢?

c# - EntityKey 和 ApplyPropertyChanges()

json - 在 HttpConfiguration 实例中的 ASP.NET Web API 应用程序中处理 json pretty-print 参数

c# - 如何处理大型 WCF 响应?

c# - 多个消费者不丢失消息

c# - 更新记录 Linq-to-SQL