【问题标题】:ASP.NET share same session with .aspx page in IFreamASP.NET 与 IFrame 中的 .aspx 页面共享相同的会话
【发布时间】:2021-05-21 02:44:06
【问题描述】:

我有一个 MVC 应用程序,其中一个控制器返回一个具有 iframe 的视图,控制器还返回需要加载的 url。

我需要 iframe 来加载旧版 .aspx 页面。

现在我想通过“SESSION”或“Request”对象将一些数据从 MVC 控制器共享到 .aspx 页面。

有可能吗?我是否有任何其他替代方法可以安全地共享数据(我不想作为 get 参数传递)。

【问题讨论】:

  • 您可以将查询字符串添加到.aspx页面的url。
  • 是的,但我不想在 GET 请求中作为参数传递......它会不太安全。
  • 如果 MVC 控制器和 .aspx 页面在两个不同的应用程序中,那么您不能通过会话或任何其他方式共享数据......
  • 当然可以。您只是无法通过SESSION。通过数据库或分布式持久存储进行会话共享已完成数百万次。

标签: c# asp.net session asp.net-mvc-4


【解决方案1】:

由于我们谈论的是两个不同的应用程序,所以有一些选项,但没有通过SESSION

您的第一个问题是如何识别同一用户。这里有两个选项。

  1. 如果两个应用程序在同一个域中,则通过使用 cookie。您可以在此处存储会话标识符,并将其发送到两个应用程序。 jwt 令牌或任何其他会话标识符都可以使用
  2. 通过使用单点登录系统。这实施起来会比较棘手,而且有很多 oauth/openidconnect 系统可供选择。

现在进入会话本身。由于我们讨论的是两个应用程序,因此您将需要某种共享位置来存储会话值

  • 最简单的形式是存储会话值的共享数据库。它可以在 mssql 的内存表中以加快速度。不利的一面是,您应该小心使查询中花费的值无效/更新
  • 某种分布式缓存,例如 REDIS。

警告 - 您可能会看到使用会话状态存储的建议。这是在服务器之间共享SESSION,而不是在应用程序之间那么容易共享,所以我不建议这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 2015-08-14
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多