当前位置: 首页 > 编程语言 > C#

在特殊类型的Asp.NetMvc应用程序中维护用户状态的最佳实践分享

时间:2023-04-10 16:27:55 C#

在特殊类型的Asp.NetMvc应用程序中维护用户状态的最佳实践做。没有什么困难和难得的,但是我在互联网上找不到任何相关的问题或文章。我已经在ASP.NETMVC5上创建了一个Web应用程序。用户不会直接转到我的应用程序。用户将进入CentralInformationSystem.com。然后,他们必须作为支持人员登录到该站点。登录后,他们将看到一个应用程序列表。将有允许签名用户使用的应用程序。其中一个应用程序将是我在Asp.NetMVC中开发的应用程序。关键是我们的应用程序不会在其他选项卡或当前选项卡等中打开。我们的应用程序将在当前选项卡内的大型iframe中打开。其他一点是我们的应用程序和CentralInformationSystem.com属于其他域。当然还有一个问题,我现在可以登录哪个用户呢?答案是,CentralInformationSystem.com将带有查询字符串的加密数据发送到我们的网站。例如,URL看起来像这样:MyMvcApplication/Home/Index?token=jkndid758adsai==qwdbqwiudhqwadoqidwqq=wqdiqw另外请记住,他们将始终发送不同的令牌。之后,我将解密令牌并找到它属于哪个用户。还要记住,令牌只能使用一次。1.我的申请是什么类型的申请?用户将输入非常大的表单。实际上可能需要3-4个小时。所以,我尝试了某种类型的向导逻辑。输入部分数据后,我将它们插入数据库,从数据库中获取标识符并将其存储在某个地方,并将用户带到下一个级别,等等。2.我想达到什么目的?我想创建这样的逻辑,即某些标识符变量值必须存储在某个地方,该值永远不会过期,直到用户关闭浏览器或注销。我不想将会话超时增加到5-6小时。3.如果用户在多个选项卡中打开我的应用程序怎么办?除了2,我还有一个问题,即用户可以在iframe中打开我网站的多个选项卡。我知道在Asp.net中我们可以在每个选项卡下创建一个Asp.net会话。但是,我不想将数据存储在会话中,因为用户可以在20分钟或4小时后停止填写表单。另外,我不能使用cookie,因为所有选项卡的cookie都是相同的。我的另一个选择是为所有视图注入带有加密值的隐藏输入。但是,我找不到如何将此数据自动添加到每个视图。另外,这对我来说似乎不是最有效的方法。另一种逻辑是防止用户在具有不同标志的多个选项卡中打开同一个应用程序。但不知道如何实现这一目标。额外:我几乎阅读了所有文章和问题/答案。我知道如何让它发挥作用。但是,我想要最好的方法。我的方法都没有效率。使用您自己的持久会话概念,由页面上的隐藏输入标识,不会过期,或者至少不会持续很长时间。让所有控制器都派生自单个基本控制器,并在结果为ViewResult时使用OnActionExecuted将结果“键”添加到ViewBag(部分视图或JSON等不需要它)。然后每个页面都可以访问ViewBag并创建隐藏的输入——您可能想为此使用局部视图,并且只在每个页面上包含局部视图。将与此会话关联的数据存储在数据库中。以上就是《C#学习教程:Asp.NetMvc应用中特殊类型用户状态维护最佳实践》的全部内容。如果对您有用,需要了解更多C#学习教程,希望您多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: