在我的ASP.Net应用程序中定义不同的角色

时间:2009-09-03 23:52:22

标签: c# asp.net sql sql-server

我的网站有点像Craiglist类型的应用。

在我的数据库中,我应该创建一个名为UserRoles的表,并将UserRoleID作为外键分配给每个创建的用户吗? 1为Admin(Complete Priveledges),2为主持人,3为普通用户,等等。

另外,在我的ASP.Net应用程序中,假设我有一个UserControl。在那个用户控件方法里面,我应该问User.ID =“1”是否有一个按钮X.Visible = True?

如果当前登录的用户是管理员,请显示一个小红色X,以便管理员可以轻松删除列表等。

或者有更成熟的方法吗?

3 个答案:

答案 0 :(得分:1)

您对角色提供者有正确的总体思路。角色提供者为用户提供某种级别(或者可能是多个级别),然后在代码中,您可以在显示内容和评估输入时验证当前用户的级别。

如果您使用自己的系统,那么上面描述的内容对于authentication and authorization来说是一种非常合理的方法。但是,如果您正在使用ASP.NET内置MemberShipProviderRoleProvider(您可能应该这样做!),那么有many tutorials来获取这些内容运行。就个人而言,我建议使用现有的提供商而不是重新发明轮子,但这只是我。您会发现内置提供程序非常全面且易于使用。

答案 1 :(得分:0)

粗略地说,你就是这样做的。

你应该看看.Net Membership,因为它已经提供了大部分的工作来完成这项工作。

此外,不是编写user.RoleID == 1,而是考虑编写一些方法/属性来回答问题。

e.g。

if(myuser.IsAdmin)
{
  ....
}

if(myuser.HasRightsTo(Rights.DoX))
{
  ....
}

答案 2 :(得分:0)

ASP.NET 2.0引入了Membership。它使维护用户,角色和配置文件变得相当简单。我建议使用默认的SQL实现。