gpt4 book ai didi

.net - 类库中的 Membership.CreateUser()

转载 作者:行者123 更新时间:2023-12-03 23:46:09 25 4
gpt4 key购买 nike

我正在将代码移出 App_Code进入类库。

我使用 Membership.CreateUser 以编程方式创建用户.

在无法访问我在 web.config 中配置的成员资格提供程序的情况下,如何在我的类库中继续执行此操作?

最佳答案

在我向您展示代码部分的工作原理之前 - 您需要了解在这种情况下如何加载设置。

当您有一个 Web 应用程序将加载您的 .dll 时文件 - 还有那个 .dll文件将访问 MembershipProvider应用程序已配置的内容 - 您必须做出一些假设。

  • Web 应用程序具有 MembershipProvider
  • Web 应用程序为此提供设置 MembershipProvider在其 Web.Config
  • Web 应用程序加载您的 .dll正确

  • 因为您的 .dll文件应包含在 Web 应用程序的 /bin 中目录,您应该能够依赖 Web 应用程序的配置,而不必提供您自己的配置。

    为此,请从 Oded 在他的回答中提到的内容开始 - 创建对 System.Web.Security 的引用在您的 .dll 内的代码 - 然后在该文件中,您可以执行以下操作:
    if (Membership.Provider != null) {
    Membership.Provider.CreateUser( ... );
    } else {
    // Do something appropriate in a case where there is no Membership Provider
    }

    此时 - 如果上述方法不起作用,可能是因为您的 Web 应用程序没有配置适当的提供程序。

    关于为什么要这样做的说明...

    之所以要让Web Application提供配置,是为了遵守 Separation of Concerns的原则。 . MembershipProvider 是一个提供默认功能的抽象类 - 几乎没有实现。

    换句话说 - 它定义了管理成员,您需要能够执行诸如 CreateUser() 之类的操作。和 GetAllUsers() .它还说您应该能够配置设置,例如指定 PasswordFormat并确定每个用户是否 RequiresUniqueEmail .

    它不会告诉您在哪里存储您的用户信息。它留给实现者( System.Web.Providers.DefaultMembershipProviderYourNS.YourMembershipProvider )。

    使用 MembershipProvider 的应用程序然后确定要提供的设置和使用的实现。换句话说 - 这是 YourNS.YourMembershipProvider 的工作指定如何管理信息,但很可能是应用程序应该决定什么 ConnectionString用于其存储等。

    所以 - 按照我上面概述的模式,您可以提供三个独立的层:
  • 将消耗 MembershipProvider 的应用程序,
  • 提供 MembershipProvider 的组件实现,以及
  • 使用任何一个的程序集 MembershipProvider已配置 - 并代表应用程序对其执行某些操作(*这是您在帖子中描述的层,我相信)

  • 请注意,如果您遵循此模式 - 您现在可以切换 MembershipProviders稍后无需更改任何其他层 - 因为这些层依赖于 MembershipProvider 的基类- 而不是依赖于您的具体实现。这可能非常有值(value)。

    关于.net - 类库中的 Membership.CreateUser(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100223/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com