代码之家  ›  专栏  ›  技术社区  ›  Xaisoft

你能用userNamePasswordValidationMode使用自定义的成员资格提供者吗?

  •  1
  • Xaisoft  · 技术社区  · 14 年前

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

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

    2. 创建实现UserNamePasswordValidator的CustomUserNamePasswordValidator并重写Validate方法。

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Steve Ellinger    14 年前

    您应该能够: [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>
    

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

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

    http://How 收件人:对WCF身份验证服务使用非默认成员资格提供程序

    推荐文章