我的网站有点像Craiglist类型的应用。
在我的数据库中,我应该创建一个名为UserRoles的表,并将UserRoleID作为外键分配给每个创建的用户吗? 1为Admin(Complete Priveledges),2为主持人,3为普通用户,等等。
另外,在我的ASP.Net应用程序中,假设我有一个UserControl。在那个用户控件方法里面,我应该问User.ID =“1”是否有一个按钮X.Visible = True?
如果当前登录的用户是管理员,请显示一个小红色X,以便管理员可以轻松删除列表等。
或者有更成熟的方法吗?
答案 0 :(得分:1)
您对角色提供者有正确的总体思路。角色提供者为用户提供某种级别(或者可能是多个级别),然后在代码中,您可以在显示内容和评估输入时验证当前用户的级别。
如果您使用自己的系统,那么上面描述的内容对于authentication and authorization来说是一种非常合理的方法。但是,如果您正在使用ASP.NET内置MemberShipProvider和RoleProvider(您可能应该这样做!),那么有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实现。