3

我目前有一个由外部客户访问的内部网站点。因此,我使用Forms Authentication进行设置。然而,作为(我的老板)的权力希望我们的所有域用户不必输入他们的用户名和密码来访问该网站。MVC3混合形式和Windows身份验证

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

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

任何人都可以告诉我如何使用严格的MVC控制器/动作设置没有第二个应用程序混合认证?

注意:在IIS 7盒子上运行MVC 3。

回答

1

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

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

如果你愿意,你可以有一个像/user/windowslogin这样的URL,其中user是控制器的名称,windowslogin是你的操作方法的名称。然后,您可以在windowslogin操作上创建一个自定义验证属性(类似[WindowsAuthentication]),并在该属性(本质上是一个MVC过滤器)中,可以查看当前请求是否来自您的域中,如果是,则说到Active Directory进行身份验证或类似的事情,如果身份验证成功,请使用FormsAuthentication类和故事的其余部分创建身份验证Cookie。

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