0

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

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

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

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

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

4

1 回答 1

2

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

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

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

于 2011-12-26T07:23:18.943 回答