aspnetboilerplate会话超时和redis实现

aspnetboilerplate session timeout & redis implementation

我正在使用带 MVC 5 的 ABP 框架并部署到 Azure。我在下面列出了几个与会话相关的问题。

  1. 我在WebMpa项目中使用了HttpContext.Current.Session,在应用程序服务中使用了AbpSession,但是在WebMpa项目中使用HttpContext.Current.Session无法从AbpSession获取数据,两者都将数据保存在不同的地方地点?

  2. 我正在使用静态助手 class 和静态 属性 到 Get/Set HttpContext.Current.Session 值,如果我想删除 HttpContext.Current.Session任何最简单的方法都可用(代码更改最少),如果我们可以从静态 class?

    中获取 AbpSession 会更好
  3. 我想在会话过期前 20 秒提醒用户,ABP 中是否有可用的内置选项?

  4. 如果我在我的应用程序中启用 Redis 缓存实现,缓存、HttpContext.Current.SessionAbpSessionTempData 将正常工作,并且都应该 Get/Set 来自 Redis 数据源的值?

  1. AbpSession 未扩展 HttpContext.Current.Session。所以答案是肯定的,你不能共享数据 btw AbpSession 和 Session。
  2. 不要对可注入类型使用静态。不好的做法!
  3. 没有内置函数。您可以使用 javascript 函数实现此目的。完成请求后,启动计时器。您知道会话超时持续时间。因此,当它达到 20 秒时,显示警报 window 以继续会话。如果回答是,则重新请求幻灯片会话。
  4. 没有!正如我所说,Session 和 AbpSession 是完全不同的东西,顺便说一句,你不能共享它们。

PS:AbpSession 存储声明。而且它是可扩展的。所以你可以在 AbpSession 中存储任何项目。请参阅 link 以了解如何扩展 AbpSession https://gist.github.com/hikalkan/67469e05475c2d18cb88