MVC4 AllowAnonymous可以与asp.net表单共存吗?

时间:2013-05-24 22:32:46

标签: asp.net-mvc-4 authorization

我们有一个很大的ASP.NET应用程序,我们使用MVC3和最近的MVC4添加了新的“页面”。 我现在想要使用Controller Actions上的AllowAnonymous属性来保护MVC4页面。

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

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

是否有人在包含Asp.Net页面和MVC4的解决方案方面取得了成功?

2 个答案:

答案 0 :(得分:0)

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

<authorization>
          <deny users="?" />
        </authorization> 
    Or
<authorization>
      <allow users="*" />
    </authorization>

答案 1 :(得分:0)

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