我目前有由外部客户访问内部网站。 所以我设置了使用表单验证。 然而这是(我的老板)的权力,希望所有的域用户不必输入用户名和密码才能访问该网站。
我已经做了一些或阅读和一切似乎都指向设置你改变使用WindowAuthenthication,然后从那里重定向WinLogin.aspx页面。
我有这样一个问题,因为我不喜欢把一个aspx形式在我的MVC应用程序的想法。
谁能告诉我如何使用MVC严格控制器/动作设置没有第二个应用程序,实现混合身份验证?
注:上的IIS 7机器上运行MVC 3。
我目前有由外部客户访问内部网站。 所以我设置了使用表单验证。 然而这是(我的老板)的权力,希望所有的域用户不必输入用户名和密码才能访问该网站。
我已经做了一些或阅读和一切似乎都指向设置你改变使用WindowAuthenthication,然后从那里重定向WinLogin.aspx页面。
我有这样一个问题,因为我不喜欢把一个aspx形式在我的MVC应用程序的想法。
谁能告诉我如何使用MVC严格控制器/动作设置没有第二个应用程序,实现混合身份验证?
注:上的IIS 7机器上运行MVC 3。
窗体身份验证是不相关的文件的URL或物理结构。 重要的是,一个URL应该最终映射到服务器上的物理(或虚拟)资源,并进行处理,并返回给用户。
因此,在某个地方为每个来电呼叫(每个HTTP请求,即使是那些对CSS和JavaScript文件)之间,你必须看到,如果当前用户有足够的权限访问与否。 如果没有,那么你可能他重定向到登录页面。
如果你愿意,你可以有一个像URL /user/windowslogin
其中user
是控制器的名字, windowslogin
是你的操作方法的名称。 然后,你可以创建一个自定义验证属性(类似[WindowsAuthentication]
您) windowslogin
行动,并在属性(其在本质上是一个MVC过滤器),你可以看到,如果当前请求来自您的域内,如果是这样,聊到Active Directory进行身份验证或类似的东西,并在认证成功的情况下,建立使用验证cookie FormsAuthentication
类,故事的其余部分。
不过,我不认为这会是一件容易的事。 其他人可能会推出更好的解决方案。