ASP.NET Web 应用程序中基于 Windows 身份验证的角色管理

Posted

技术标签:

【中文标题】ASP.NET Web 应用程序中基于 Windows 身份验证的角色管理【英文标题】:Windows authentication based role management in ASP.NET Web Application 【发布时间】:2012-06-29 15:10:35 【问题描述】:

我不太确定我是否在 ASP.NET 应用程序中适当地管理用户角色。这样的做法是正确的,还是不正确的,还是可以改进的?

所有用户都添加到数据库中的用户表中,其中有字段例如:(userid, name, surname, isAdmin)

在我的应用程序中,我使用

获取用户 ID
Request.Servervariables.Get("LOGON_USER")

在呈现页面时,我运行 SQL 查询来检查该页面上的当前用户是否在我的 SQL Server 中具有“isAdmin”参数 =“true”。然后,如果是,我会渲染并使适当的控件可见。 (例如,指向管理员页面的链接按钮)

【问题讨论】:

【参考方案1】:

ASP.Net 角色提供程序(如果您不喜欢,您可以自己动手做基本相同的事情,但符合您的要求)对此非常有用。与其在每个页面的顶部放置一个 SQL 查询(如果必须更改某些内容,这将是一场噩梦),您可以说(在这里转述)

if (RoleProvider.IsUserInRole(Request.Servervariables.Get("LOGON_USER"), "Admin") == true)

   //populate page as admin

else

   //populate page as not admin

【讨论】:

【参考方案2】:

这不是正确的做法。您应该使用可以轻松与会员提供程序集成的 asp.net roleprovider。它使精简页面控件/访问变得容易,并且角色提供程序非常可扩展和可扩展。您的方法非常严格,如果应用程序增长可能会遇到问题。

【讨论】:

以上是关于ASP.NET Web 应用程序中基于 Windows 身份验证的角色管理的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET ADO.NET 和C#编程语言他们之间的关系是怎样的?

ASP.Net Web 服务响应时间慢

Asp.net Web 应用程序基于角色的身份验证

是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?

Asp.Net Core Web API 5.0 和 Angular 中基于自定义角色的授权

如何在 ASP.Net Web API 中为特定控制器启用 Windows 身份验证