【问题标题】:How to handle authentication/authorisation in a web application如何在 Web 应用程序中处理身份验证/授权
【发布时间】:2025-12-24 22:25:16
【问题描述】:

我正在建立一个 Intranet 网站。而且我仍然不确定如何实现网站的安全性。我正在使用 ASP.NET MVC 3。

公司中的任何人都可以访问该网站。这是一个认可系统,您可以在其中提名员工获得奖励。目前我没有使用任何类型的身份验证。我有一个包含角色的角色表和一个指定哪个用户包含哪些角色的关联表,这些角色主要是管理员类型的角色。如果用户确实属于这些角色,那么他/她仍然可以访问网站的各个部分。

我需要为此使用内置会员吗?或者我需要为此创建一个自定义成员吗?我们不使用登录页面。如果用户没有访问视图的角色,那么他/她将被重定向到另一个页面。

我们使用 IIS 进行身份验证。这与 Windows 身份验证相同吗?我有用于授权的角色表。

我现在只是有点困惑,我希望有人能给我一些更清楚的说明。

【问题讨论】:

  • 我不知道你怎么能说你正在使用 IIS 进行身份验证,但不知道它是如何做到的?当使用 Windows 身份验证时,假设所有用户和 Web 服务器都在同一个域(或受信任域)上,那么用户不需要专门登录到网站(因为他们已经登录到他们的机器并且浏览器将与服务器协商身份验证过程。在 ASP.NET 应用程序中,您可以使用页面的“用户”属性来访问当前正在执行请求的用户(及其组)。

标签: c# asp.net asp.net-mvc asp.net-mvc-2 asp.net-mvc-3


【解决方案1】:

你可以很好地使用 ASP.Net MembershipProviderRoleProvider

有关如何使用它们的教程,您应该查看Videos at asp.net

这是MSDN的演练

【讨论】:

  • 如果我不使用登录页面,我将如何实现这一点?不需要登录页面。
【解决方案2】:

Scott Guthrie 的这篇博文可能会有所帮助:

Recipe: Enabling Windows Authentication within an Intranet ASP.NET Web application

对于 Intranet Web 应用程序,最常用的身份验证方案称为 Windows 身份验证。 Windows 身份验证避免了在应用程序中创建登录表单的需要,并且不需要最终用户手动输入他们的用户名/密码凭据来登录应用程序。相反,ASP.NET 和 IIS 可以以安全的方式自动检索和验证访问该站点的最终用户的 Windows 用户名

【讨论】:

  • 这是一个对所有人开放的网站。只是某些视图不是每个人都可以访问的,为此用户必须具有角色表中的角色。那么我将如何将其与角色表一起使用,而不是类似: If User.IsInRole("DOMAIN\managers") Then..?
最近更新 更多