使用ASP.NET处理用户授权

时间:2011-12-23 16:34:39

标签: asp.net sql-server-2008 .net-4.0 silverlight-5.0

创建新的Silverlight 5.0业务应用程序时,会自动生成身份验证和授权代码。默认情况下,所有用户信息和角色都保存在aspnetdb mdf文件中。我的问题是:

  1. 将用户授权/身份验证数据保存在与业务相关的数据不同的数据库中是正常的做法,还是应该将表复制到主数据库中?我看到当前的实现涉及ApplicationId字段,这意味着它可以存储不同应用程序的数据?也许在Web服务器上有一些用于所有Web应用程序的公共数据库(只是猜测)? :)

  2. 如果我要将用户的信息保存在单独的数据库中,如何关联这两个数据库之间的数据?我的意思是,我会在某些表(业务规则)中引用UserId?我的业务数据是使用身份PK而aspnetdb使用的是UniqueIdentifier,这是一个问题吗?

  3. 当用户在网站上注册时,我们如何在生产中分配角色? Visual Studio中有一个ASP.NET配置工具,但生产环境又如何呢?这应该在Web项目中编码吗?

  4. 在应用程序始终需要身份验证的情况下,处理用户授权/身份验证的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

您不应在生产应用程序中使用defaut ASP.NET身份验证实现:它使用本地数据库(mdf文件),因为它开箱即用。但是,您不受此解决方案的限制:

  • 您可以配置ASP.NET身份验证(和角色)提供程序以使用您的真实数据库,从而可以更好地将其集成到现有数据中。要更好地了解完整过程,请参阅http://msdn.microsoft.com/en-us/library/6e9y4s5t.aspx和链接的页面。 ASP.NET能够自己在数据库中生成所有必需的表。

  • 您可以使用自己的身份覆盖默认身份验证机制。在这种情况下,您只需编辑Web应用程序项目中的Services / AuthenticationService.cs。 AuthenticationService类继承自AuthenticationBase,并允许您使用自己的实现覆盖相当多的成员资格方法。