【问题标题】:ASP-MVC: Object Instance Lost When Redirecting After AuthorizingASP-MVC:授权后重定向时对象实例丢失
【发布时间】:2009-01-24 22:47:00
【问题描述】:

我在绑定表单数据的 Action 上有一个“Authorize”属性。

如果用户提交表单但未获得授权,则会出现登录提示。登录后,用户被正确重定向,但模型为空。

如何处理?

【问题讨论】:

    标签: .net asp.net-mvc redirect authorization


    【解决方案1】:

    一个基本的解决方案是创建一个新的 ActionFilter 属性,其行为类似于 Authorize,不同之处在于它会在重定向之前将模型存储在 Session 中,然后用户登录,然后重定向回数据表单。然后当授权用户获得数据表单时,用可能存储的值填写数据表单,用户可以再次提交填写的表单。您可以根据需要更改此设置,甚至可以将数据存储在客户端,但主要思想是使用自定义授权 ActionFilter 在重定向之前存储模型,而不是 Authorize。

    【讨论】:

      【解决方案2】:

      这始终是个问题,并且需要您跳很多圈才能保持这种状态。您始终可以将模型双重存储在 Session 和 ViewState 中,这样如果用户来自具有空模型的地方,您可以在 Session 中查找它。

      【讨论】:

      • MVC中没有ViewState,还是我弄错了?
      • 深渊,MVC中没有ViewState。我喜欢 ViewState 现在是开发者的拐杖。
      【解决方案3】:

      我考虑过但从未尝试过的一件事是将登录提示显示为同一页面上的模式对话框,而不是重定向到单独的登录页面然后重定向回来。登录 GUI 逻辑通常很简单,您不需要单独的视图。

      例如,您可以将登录公开为使用 Json 消息编码的简单 WCF 服务,然后使用 jQuery 从您的模态对话框中与其对话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-14
        • 2019-09-12
        • 1970-01-01
        • 2014-06-16
        • 2017-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多