如何在iis6上的ASP.NET MVC中为单个路由设置Windows身份验证?

时间:2009-01-08 16:44:50

标签: asp.net-mvc iis-6 windows-authentication

我正在开发一个Web应用程序,我需要混合使用Forms& Windows身份验证一起。

我选择的方法是:所有网站上的身份验证方法必须是表单身份验证。有一个表单页面(~/home/Login)可以通过表单身份验证登录。神奇(和麻烦)是只有一个页面(比如~/Home/WinLogin)必须将auth metod设置为windows auth。此页面用于读取HttpContext.User.Identity.Name以获取Windows用户名。

我不知道如何在iis6上为一条特定路线设置win auth?

路线看起来像~/Home.ashx/WinLogin。好的,那么呢?我试图在虚拟目录和子目录WinLogin中创建一个目录Home.ashx。但随后~/Home.ashx/Login(使用登录表单)停止工作。

因为在iis6上我们必须使用ashx处理程序,似乎没有其他方法可以做到这一点,而不是创建一个完成工作的普通网页~/WinLogin.aspx。但是我想避免这种情况,只使用MVC。

了解如何设置iis7的信息:IIS 7.0 Server-Side blog 它并不完美(Mike Volodarsky必须创建自定义表单auth模块),但它可以工作。

1 个答案:

答案 0 :(得分:2)

您无法像在IIS7中那样在IIS6中有选择地设置Windows身份验证。但是,您可以将home.ashx设置为支持匿名和Windows身份验证;替换/ Login案例中的HttpContext.User属性并使用/ WinLogin案例中的windows原则。但是,您需要注意,您的代码路径允许您希望它们使用表单身份验证的情况,但是它们会向您显示Windows原则标识并忽略它。