2009-09-03 58 views
0

我有一个类似于Craiglist类型应用程序的网站。在我的ASP.Net应用程序中定义不同的角色

在我的数据库中,我应该创建一个名为UserRoles的表,并将UserRoleID作为外键分配给每个创建的用户? 1为管理员(完成Priveledges),2为主持人,3为正常用户等。

此外,在我的ASP.Net应用程序中,说我有一个UserControl。在该用户控件方法的内部,我应该问一下User.ID =“1”是否生成一个按钮X.Visible = True?

说,如果当前登录的用户是管理员,做出一点红色的X出现这样管理员可以轻松地删除的列表等

或者是有一个更成熟的方式做到这一点?

回答

1

您有正确的角色提供者的想法。角色提供者给用户一些级别(或者可能是多个级别),然后在你的代码中你可以在显示内容和评估输入时验证当前用户的级别。

如果你正在使用你自己的系统,那么你上面描述的是一个完全合理的方法authentication and authorization。但是,如果您正在使用ASP.NET内置的MemberShipProviderRoleProvider(您可能应该这样做!),那么有manytutorials就可以启动并运行它们。就个人而言,我会建议使用现有的提供商重新发明轮子,但那只是我。您会发现内置的提供程序非常全面且易于使用。

0

粗略地说,这是如何做到这一点。

您或许应该看看.Net Membership,因为它已经提供了大部分工作来完成此项工作。

而不是写user.RoleID == 1,到处都考虑写一些方法/属性来为你回答问题。

例如

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

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

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

相关问题