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

时间:2012-06-28 06:02:50

标签: asp.net sql-server security windows-authentication user-roles

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

所有用户都被添加到数据库中的users表中,其中包含以下字段:(userid,name,surname,isAdmin)

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

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

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

2 个答案:

答案 0 :(得分:1)

这不是一种正确的方法。您应该使用可以轻松与成员资格提供程序集成的asp.net roleprovider。它可以轻松减少页面控件/访问权限,角色提供程序非常可扩展和可扩展。你的方法非常严格,如果应用程序增长可能会遇到问题。

答案 1 :(得分:1)

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

if (RoleProvider.IsUserInRole(Request.Servervariables.Get("LOGON_USER"), "Admin") == true)
{
   //populate page as admin
}
else
{
   //populate page as not admin
}