【问题标题】:Using aspnet_regsql.exe to set up Windows Authentication on an already matured database使用 aspnet_regsql.exe 在已经成熟的数据库上设置 Windows 身份验证
【发布时间】:2009-05-14 14:49:40
【问题描述】:

我有一个数据库(使用 Microsoft SQL Server Management Studio Express),它目前在一个正常运行的应用程序中被大量使用。我正在将此应用程序移植到 Windows 身份验证,而不是当前存在的基本身份验证系统(或缺少该系统)。

我知道的最简单的设置方法是使用 aspnet_reegsql.exe 文件为我设置一些表。这显然会创建它的基本表,例如 dbo.aspnet_Roles、dbo.aspnet_Users 和 dbo.aspnet_UsersInRoles。

在当前数据库中,存在名为 dbo.Users、dbo.UserRole 和 dbo.UserRoleMapping 的表。当前为此数据库编写的许多存储过程都依赖于这些表。

是否有任何温和的方法来适应 aspnet_regsql.exe 将创建的新表?可能让它在这些现有的表名上创建配置,而不是硬连线做什么?

提前致谢:)

【问题讨论】:

  • 您当前的表中是否有任何信息在正确填写后无法从 ASP.NET 角色表派生?

标签: asp.net sql vb.net sql-server-2005


【解决方案1】:

听起来你混淆了两个不同的东西。 Windows 身份验证是一种将 Windows 登录名显示到数据库的方法。它通过使用“Windows 身份验证”连接到数据库在 SSMS 中工作。应用程序将在其connection string 中指定:

Integrated Security=SSPI;

而不是用户名和密码。这两个选项都将您当前的 Windows 凭据发送到数据库。一个示例 Windows 登录是 yourlaptop\chris。

另一方面,aspnet_regsql.exe 设置了一组表,允许预定义的 Microsoft“表单身份验证”工作。例如,login control 需要这些表。使用 aspnet_regsql 控件时,您通常使用表单身份验证。您通过在网络表单上输入您的用户名和密码登录。有关更多成员资格示例,请参阅this site

【讨论】:

  • 也许我模糊了主题之间的界限,但是使用 aspnet_regsql 设置数据库并将其连接到您的 web.config 文件中不能让您对这些表执行角色操作吗? IE Roles.IsUserInRole(user, role) 被广泛使用。如果不运行 aspnet_regsql,则可能无法以正确的方式设置表以使这些函数继续工作。这是我的想法错误吗?
  • 您能否详细介绍一下您如何使用 Roles.IsUserInRole(user, role)?可以举个例子吗?
  • 当然。我有三个角色层次结构。假设管理员、经理和用户。加载页面后,我检查正确的权限并授权用户。很多时候,我最终都会调用 User.IsInRole(role)。这样我就得到了这个会话的当前用户。一旦获得授权,我就会加载正确的表格,然后就可以上路了。
  • 好吧——所以你基本上是想从旧的用户表迁移到 aspnet_regsql 用户表?
  • 差不多,是的。但是,我希望找到一种不破坏流程中所有内容的方法(存储过程、代码内调用)。这似乎不太可能。我想我可能需要以某种方式使用我当前的表名设置表,以免完全破坏存储过程(尽管它们可能仍需要大量工作)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
相关资源
最近更新 更多