2010-10-04 82 views
1

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

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

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

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

的问题是,如果我在我服务的登录方法,它是从Web浏览器的URL http://test.com/service.svc/login,我怎么能得到用户名和密码调用。假设它的用户名和密码可以输入到网页中,或者它可以来自智能设备应用程序(android,iphone等)

回答

0

您应该能够: [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的认证服务

+0

史蒂夫,我觉得你的链接弄乱。 – Xaisoft 2010-10-06 01:46:11

+0

dang it!这里是:http://msdn.microsoft.com/en-us/library/bb386455.aspx – 2010-10-06 02:03:07

相关问题