asp.net-mvc - MVC3 混合表单和 Windows 身份验证

标签 asp.net-mvc asp.net-mvc-3 authentication forms-authentication

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

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

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

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

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

最佳答案

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

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

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

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

关于asp.net-mvc - MVC3 混合表单和 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811273/

相关文章:

.NET MVC - 如何从另一个 Controller 获取 JsonResult?

asp.net-mvc - Asp.Net核心2.1 : Set partial view default location formats

c# - 如何在 MVC Razor DropDownList 中使用 Html.Raw?

asp.net - OWIN OAuth 2 token 是如何实际创建的?

php - 同域多表单认证

asp.net-mvc - 如何对我的 asp.net-mvc Controller 的 OnActionExecuting 方法进行单元测试?

asp.net-mvc-3 - 使用 IEnumerable 在域模型和 View 模型之间进行映射

c# - 在最近的工具更新失败并出现依赖错误后添加 Controller

java - 如何在 REST API 中获取登录用户 ID

asp.net-mvc - 空输入字符串的 ASP.Net MVC 模型绑定(bind)创建空模型对象