2011-12-23 49 views
0

创建新的Silverlight 5.0业务应用程序时,会自动生成验证和授权码。所有用户信息和角色默认保存在aspnetdb mdf文件中。我的问题是:使用ASP.NET处理用户授权

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

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

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

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

回答

2

你不应该使用ASP.NET defaut身份认证实施方案在生产应用:它使用本地数据库(MDF文件),因为它的工作原理开箱。然而,你是不是该解决方案的限制:

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

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