【问题标题】:Can you use a custom membership provider with userNamePasswordValidationMode?您可以将自定义成员资格提供程序与 userNamePasswordValidationMode 一起使用吗?
【发布时间】:2011-04-21 00:13:33
【问题描述】:

我看到的每个示例都使用带有 userNamePasswordValidationMode 的默认成员资格提供程序,但是如果我有自定义成员资格提供程序,我可以在 WCF REST 服务的 ServiceCredentials 中为 userNamePasswordValidationMode 指定 MembershipProvider 吗?如果可能的话,以下路线是否是最好的选择:

  1. 创建一个实现 Membership Provider 的自定义成员资格提供程序。

  2. 创建一个实现 UserNamePasswordValidator 的 CustomUserNamePasswordValidator 并覆盖 Validate 方法。

  3. 在 Validate 方法中,验证用户是否存在于数据库中。

我遇到的问题是,如果我的服务中有一个登录方法,并且它是从 URL 为 http://test.com/service.svc/login 的 Web 浏览器调用的,我该如何获取用户名和密码。假设用户名和密码可以输入到网页中,也可以来自智能设备应用程序(android、iphone 等)

【问题讨论】:

    标签: wcf rest wcf-security custom-membershipprovider


    【解决方案1】:

    您应该能够: [HowToUseNonDefaultMembershipProvider][1] 在第 1 步中,页面有两个附加链接,第一个显示如何构建会员提供程序类,第二个显示必要的配置条目。虽然第二个链接讨论了指定默认提供程序,但您实际上可以在配置中指定任意数量的提供程序,其中一个恰好是默认提供程序:

    <system.web>
        <membership defaultProvider="SqlProvider">
            <providers>
                <clear />
                <add name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="MySqlConnection"
      applicationName="MyApplication"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true"
      requiresUniqueEmail="true"
      passwordFormat="Hashed" />
                <add name="MyProvider"
                         type="MyCompany.MyNamespace.MyMembershipProvider" />
            </providers>
        </membership>
    </system.web>
    

    现在,在上面链接的示例代码中,您可以在 AuthenticationService_Authenticating 方法中有一行,如下所示:

    e.Authenticated = Membership.Providers["MyProvider"].ValidateUser(e.UserName, e.Password);
    

    在您的自定义提供程序类中,您将实现 ValidateUser 方法。这可能包含验证用户名和密码(传递给方法)所需的任何逻辑。

    [1]:http://How 到:为 WCF 身份验证服务使用非默认成员资格提供程序

    【讨论】:

    • 史蒂夫,我认为你的链接搞砸了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多