【问题标题】:ASP.Net Upgrading a Web Site in a phased approachASP.Net 分阶段升级网站
【发布时间】:2019-01-21 14:06:19
【问题描述】:

我只是想将开发转移到 .Net Core 和 Angular。

我们有一个用 C# ASP.Net 应用程序编写的旧网站项目,它在功能上满足业务需求,性能良好,并且运行在最新技术上。也就是说很难使用它,进行更改需要时间,它确实需要在业务层进行大修,DAL 需要迁移到(EF)并希望迁移到新的 GUI 框架。这些更改都是为了提高质量、开发人员的生产力,最终加速发布。

我们有一组需要实现的新功能,它们几乎是独立的“附加组件”,非常适合作为单独的站点开发,但我们需要使用现有的登录详细信息和会话详细信息,以使用户体验无缝的。目标是在“新世界”中编写新功能,然后分块重写遗留页面。

这一定是一个普遍而明显的问题,但关于如何实现这一目标的研究一直没有结果。

真正的问题是如何在站点之间动态共享会话数据。

【问题讨论】:

  • 令人困惑,有点“完蛋”,你会得到类似这样的固执己见的答案:如果你的 DAL 和 GUI 有问题,那么首先解决这些问题。然后在最后一段中,您最终会得到“共享会话数据”——这与“迁移到 Core 和 Angular”并没有太大关系。

标签: c# asp.net .net model-view-controller .net-core


【解决方案1】:

听起来您目前正在将会话保存在内存中的数据中。解决此问题的标准方法是将会话状态从内存中移出并移至 SQL Server、MongoDB、Redis 等,以便两个应用程序都可以访问共享状态。

更新

现在我们要解决问题的症结所在。如果您依赖于存储在字段/隐藏字段中的数据,您可能已经遇到了安全问题(如果不了解您的实现,很难说)。

我猜您要问的问题是“我如何安全地从旧系统导航到新系统(反之亦然)”。这里有几种可能的策略:

  • 首先想到的解决方案是 SSO(单点登录)方法。在这里,您将一个不透明的令牌从一个系统传递到另一个系统,以标识当前用户。
  • 如果您能够通过相同的主机名提供旧/新应用程序,则可以使用 cookie 来存储某种用户令牌。

注意事项:

  • 不要在 url 中传递纯文本用户 ID 之类的内容。
  • SSO 令牌应该是完全独立于用户 ID 的东西(例如,可以是引用共享数据库中记录的 guid)。

【讨论】:

  • 除了控制访问、语言和权限的用户详细信息之外,其他所有内容都存储在字段或隐藏字段中。分享用户详细信息已经够难了,不确定是否通过 URL 传递,但是 1) 无法弄清楚如何确保安全,2) 用户可能会收到带有 url 的电子邮件,他们不必再次登录。
  • PS:我提到其他数据只是因为,不断绊倒异常
  • 不要相信存在安全问题,隐藏字段仅用于存储 ID。广告是问题的症结所在,出于安全原因的单点登录正在讨论中,但目前不在功能列表中。非常感谢,是的,旧系统和新系统将使用相同的主机名托管,所以我来看看如何共享 cookie
猜你喜欢
  • 2022-11-11
  • 2011-01-02
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2014-03-29
  • 2021-06-22
相关资源
最近更新 更多