在特殊类型的Asp中持久化用户状态的最佳实践.Net Mvc应用程序

本文关键字:最佳 Net 应用程序 Mvc 状态 持久化 类型 Asp 用户 | 更新日期: 2023-09-27 17:49:17

我会尽量解释我的情况和我想做什么。没有什么困难和罕见的情况,但是我在网上找不到任何相关的问题或文章。

我在ASP上创建了一个web应用程序。. Net MVC 5。用户不会直接进入我的应用程序。用户将进入CentralInformationSystem.com。然后他们必须登录到这个网站的支持方式之一。登录后,他们将看到一个应用程序列表。将有已被允许为签名用户使用的应用程序。其中一个应用程序将是我在Asp.Net MVC开发的应用程序。

最主要的一点是我们的应用程序不会在其他选项卡或当前选项卡中打开等等。我们的应用程序将在当前选项卡内的一个大框架中打开。

另一个重点是我们的应用和CentralInformationSystem.com属于其他领域。

另一个问题当然是,我现在如何知道哪个用户已经登录了?答案是,CentralInformationSystem.com将带查询字符串的加密数据发送到我们的网站。例如,URL看起来像这样:

MyMvcApplication/Home/索引?令牌= jkndid758adsai = = qwdbqwiudhqwadoqidwqq = wqdiqw

还要记住它们总是会发送不同的令牌。

之后,我将解密令牌并查找它属于哪个用户。还要记住,一个Token只能使用一次。

1。我的申请是什么类型的?

用户将输入非常大的表单。实际上可能需要3-4个小时。所以,我尝试了一些类型的向导逻辑。在输入数据的某些部分后,我会将它们插入数据库,从数据库中获取标识符并将其存储在某个地方,并将用户带到下一个级别,等等。

2。我想达到什么目标?

我想创建这样的逻辑,一些标识符变量值必须存储在这样的地方,永远不能过期,直到用户关闭浏览器或注销。我不想把会话超时时间增加到5-6小时。

3。如果用户在多个选项卡中打开我的应用程序怎么办?

旁边2我也有一个问题,用户可以打开我的网站内iframe多个选项卡。我知道,在Asp.net中,我们可以根据每个标签不同的会话。但是,我不想在会话中存储数据,因为用户可以在20分钟或4小时后停止填写表单。此外,我不能使用cookie,因为cookie对所有选项卡都是相同的。

我的另一个选择是,向所有视图注入带有加密值的隐藏输入。但是,我找不到如何自动将这些数据添加到每个视图。而且,在我看来,这似乎不是最有效的方法。

另一个逻辑是防止用户使用不同的令牌在多个选项卡中打开相同的应用程序。但是,不知道怎么做到这一点也。

附加:

我读了几乎所有的文章和问题/答案。我知道该怎么做。但是,我想要最好的方法。

在特殊类型的Asp中持久化用户状态的最佳实践.Net Mvc应用程序

使用您自己的持久会话概念,该会话由页面上的隐藏输入标识,并且不会过期,或者至少不会过期很长时间。有你所有的控制器从一个单一的基本控制器,并使用onactionperformed添加会话"键"到ViewBag时,结果是一个ViewResult(你不需要它的部分视图或JSON等)。然后,每个页面都可以访问ViewBag并创建隐藏的输入—可能您希望为此使用分部视图,并在每个页面上简单地包含分部。将与此会话关联的数据存储在数据库中。