在ASP.NET MVC3中混合使用基本身份验证和表单身份验证

6
我有一个网站,其中一些区域需要通过基于表单的身份验证来登录,使用自己连接到数据库的提供程序。
由于网站处于预览状态,我希望通过基本身份验证保护整个站点,以防止未经授权的访问在上线之前发生。
问题是当基本身份验证和表单身份验证同时启用时,将公开的页面转到表单登录页面。
如何在使用基本身份验证保护整个站点的情况下,保持成员登录和门户访问的基于表单的身份验证?
1个回答

0

我认为你可以通过以下方式满足你的使用案例。

在站点的.Net授权规则中,为匿名用户创建一个拒绝规则。

在站点身份验证中启用基本身份验证和表单身份验证。禁用所有其他身份验证类型。这应该要求所有用户使用基本身份验证进行身份验证才能使用基本站点,然后要求使用表单登录来访问需要自定义身份验证的站点部分。


谢谢Alex。我尝试了这个但是还是有一样的问题。问题是所有ASP.NET页面(控制器)都需要登录,即使添加了[AllowAnonymous]属性的页面也是如此,详情请见:http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx。 - DaveO
我一直在使用MVC3,并且已经让它在“我的机器”上工作,但我知道这并没有什么帮助。通过上述配置,我有一个自定义的LogonAuthorize:AuthorizeAttribute过滤器,它排除了某些控制器需要进行过滤。如果(!(filterContext.Controller is AccountController)),那么就会执行base.OnAuthorization(filterContext)。我不确定这将如何与AllowAnonymous属性交互(当我转移到MVC4时将使用该属性)。 - AlexC
我尝试按照您在上面的代码中展示的方式添加了一个控制器检查,但仍然存在相同的问题:( 我认为我需要一些http模块或类似的东西,因为IIS会报错“您不能同时使用基于挑战的身份验证方法和基于登录重定向的身份验证方法”。这只是一个临时情况,所以如果可以的话,我不想深入研究混合身份验证处理或编写http模块的复杂性!对我来说,很奇怪的是,当我的表单登录基于数据库时,IIS/Asp.Net无法处理全局块(基本身份验证)和基于表单的登录。 - DaveO
问题解决了吗?我现在也遇到了同样的问题。 - Kun-Yao Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接