3

我目前有一个可供外部客户访问的 Intranet 站点。因此,我使用表单身份验证进行了设置。然而,(我的老板)的权力希望我们所有的域用户不必输入他们的用户名和密码来访问该站点。

我做了一些或阅读,一切似乎都指向设置一个 WinLogin.aspx 页面,您将其更改为使用 WindowAuthenthication,然后从那里重定向。

我对此有疑问,因为我不喜欢在我的 mvc 应用程序中放置一个 aspx 表单的想法。

谁能告诉我如何在没有第二个应用程序的情况下使用严格的 MVC 控制器/动作设置来实现混合身份验证?

注意:在 IIS 7 机器上运行 MVC 3。

4

1 回答 1

1

表单身份验证与文件的 URL 或物理结构无关。重要的是 URL 最终应该映射到服务器上的物理(或虚拟)资源,并被处理并返回给用户。

因此,对于每个传入调用(每个 HTTP 请求,甚至是 CSS 和 JavaScript 文件的请求),您必须查看当前用户是否有足够的权限来访问它。如果不是,那么您可能会将他重定向到登录页面。

如果你愿意,你可以有一个 URL,比如/user/windowsloginwhereuser是控制器的名称,并且windowslogin是你的操作方法的名称。然后您可以在您的操作上创建一个自定义身份验证属性(类似于[WindowsAuthentication]windowslogin,并在该属性(本质上是一个 MVC 过滤器)中,您可以查看当前请求是否来自您的域,如果是,请与 Active 交谈用于身份验证或类似内容的目录,以及在身份验证成功的情况下,使用类创建身份验证 cookie FormsAuthentication,以及故事的其余部分。

但是,我认为这不是一件容易的事。其他人可能会引入更好的解决方案。

于 2012-05-30T06:57:27.370 回答