代码之家  ›  专栏  ›  技术社区  ›  Andy West

ActiveDirectoryMembershipProvider和引用完整性

  •  0
  • Andy West  · 技术社区  · 14 年前

    在过去,当我实现自己的身份验证机制时,我会有一个用户表,它与应用程序mysql数据库中的其他表有关系。但是,现在我正在考虑使用ActiveDirectoryMembershipProvider,我看不到在AD用户和那些表之间创建类似关系的方法。

    解决这个问题的正常方法是什么?我是否应该接受这样一个事实,即有人可能插入具有与现有用户不对应的用户ID的记录?实际上,我并不希望发生这种情况,但我习惯于确保数据库级别的完整性。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Richard Beier    14 年前

    我认为在本例中,您必须放弃数据库引用完整性。在将记录添加到数据库之前,只需检查应用程序代码是否存在Active Directory帐户。

    理论上,有些用户可以手动进入并键入一个引用无效AD帐户的SQL插入语句。但在实践中,希望您不会给一组用户直接表访问权。如果应用程序代码是访问数据库的唯一对象,那么应用程序代码在插入行之前正在验证帐户,并且验证代码已经过测试,那么您应该是正常的。

    为了安全起见,您可以使用一个夜间批处理过程,根据Active Directory验证引用表中的所有行。如果发现任何不一致,它可以发送电子邮件给您。这不会防止违反诚信,但至少它会让您了解它们。

        2
  •  0
  •   andrewWinn    14 年前

    我不知道你可以通过MySQL来实现。如果您使用的是SQL Server,则可以编写一个触发器,该触发器将调用一个C dll,以验证它们是否是AD成员。如果没有,您可以阻止插入数据库。你也许可以用MySQL做这样的事情,但是我对MySQL的了解非常少。