0

我们有一个大型 ASP.NET 应用程序,我们一直在使用 MVC3 和最近的 MVC4 添加新的“页面”。我现在想使用控制器操作上的 AllowAnonymous 属性来保护 MVC4 页面。

Web.Config 包含一个授权元素,因此: <authorization> <deny users="?"/> <allow users="*"/> </authorization>

这会处理 Asp.Net 页面。但不幸的是,它也否定了 MVC4 应用程序的 AllowAnonymous 属性。如果我删除授权元素,则 MVC4 身份验证工作(与 VS2012 MVC4 模板网站一样),但通过删除它,ASP.Net 页面不再受到保护。

有没有人使用包含 Asp.Net 页面和 MVC4 的解决方案取得任何成功?

4

2 回答 2

0

我相信我有解决这个问题的办法。最初,对于 Asp.Net,我将一些无需登录即可访问的页面列入白名单。即,我<deny users="?"/>在主 web.config 中设置,然后使用 location 元素来<allow users="*"/>获取不需要授权的路径。为了使用 MVC4 授权,并使其与 Asp.Net Forms 身份验证共存,我建议相反的方法,即允许所有用户访问,然后将 Asp.Net 页面的路径 [文件夹] 列入黑名单需要在 web.config 中授权。这将处理 Asp.Net 页面。对于 MVC4 代码,Controller/Action 方法现在可以使用新的 Authorize 和 AllowAnonymous 属性。事实上,这正是纯 MVC4 应用程序的工作方式;不会有<deny users="?"/>在主 web.config 中,Authorize 属性将用于保护操作。因此,我没有考虑转换我的 Asp.Net 应用程序以使其与 MVC4 一起使用,而是考虑如何修改 MVC4 应用程序以便它可以容纳 Asp.Net 页面。我想知道是否有这样做的首选方式,所以如果您有任何建议,请发表评论。

于 2013-05-28T23:42:01.843 回答
0

正如我对 ASP.Net 页面的理解,创建单独的文件夹和 web.config 文件。MVC 页面也一样,创建单独的文件夹和 web.config 文件。然后根据需要为每个添加授权属性。如

<authorization>
          <deny users="?" />
        </authorization> 
    Or
<authorization>
      <allow users="*" />
    </authorization>
于 2013-05-25T02:37:40.447 回答