2013-02-12 9 views
7

Membership.ValidateUser 메서드는 모두 개발 서버 (iis express 및 cassini)에서 작동합니다. 그러나 내 IIS에서 (내 개발 컴퓨터에서 응용 프로그램으로 게시) 항상 false을 반환합니다.Membership.ValidateUser는 항상 IIS에서 false를 반환합니다.

사용자도 승인되며 잠겨 있지 않으며 사용자 이름과 비밀번호가 정확합니다. 추적 오류가 없습니다. ?

HTTP 요청 1 : davutg-PC : 6423/BpmService/로그인 사용자 이름 = ABC & 암호 = 0035

결과 1 : < 부울>사실 </부울>

http 요청 2 : davutg-pc/BPM/BpmService/Login? userName = abc암호 = 0035

결과 2 : < 부울>거짓 </부울> 다음

내가 machine.configs은 동일한 프레임 워크 (64) 및 프레임 워크이다 비해

<roleManager enabled="true" defaultProvider="MySQLRoleProvider"/> 

<machineKey validationKey="E8B40EEA5A8EFC6F...key" decryptionKey="385..." validation="SHA1" /> 

<membership defaultProvider="MySQLMembershipProvider" hashAlgorithmType="SHA1"> 
    <providers> 
    <remove name="MySQLMembershipProvider" /> 
    <add type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.5.5.0, Culture=neutral, 
     PublicKeyToken=c5687fc88969c44d" 
     name="MySQLMembershipProvider" 
     connectionStringName="LocalMySqlServer" 
     minRequiredPasswordLength="3" 
     minRequiredNonalphanumericCharacters="0" 
     requiresUniqueEmail="false" 
     requiresQuestionAndAnswer="false" 
     passwordFormat="Encrypted"/> 

내 설정입니다 .

개발 서버에서 작동하지만 IIS에서는 항상 false를 반환합니다. 나는 다른 질문을 IIS와 쿼리 할 수 ​​있으며 그러한 문제는 없습니다. 또한

: 내가 잘못 비밀번호 "FailedPasswordAttemptCount"를 입력 개발 서버에 대한 증가했다. 은 IIS의 경우 변경되지 않습니다. IIS의 문제점. 그냥 Membership이라고 부릅니다. 유효 사용자 (사용자, 패스)

모든 의견을 환영합니다!

답변

7

해결! 희망이 누군가의 시간을 저장합니다.

문제는 응용 프로그램 이름입니다.

호스트 : 포트/서비스

호스트/BPM/서비스

참고 : BPM은 당신이 IIS에 제공 applicaton 이름입니다.

회원 암호화 알고리즘은 "ApplicatonName"을 사용합니다. 응용 프로그램을 설치할 때 응용 프로그램 이름으로 BPM을 사용했습니다. 개발 서버에서 "name"은 "/"를 반환합니다. 그러나 IIS에서의 "BPM"!

내 모든 이전 암호는 "/"응용 프로그램 이름으로 생성되었습니다. 그래서 항상 응용 프로그램 이름을 제공하십시오. Scott-Gu 님의 블로그에서이 article을 읽으십시오.

public bool Login(string userName,string password) 
    { 
     var provider = Membership.Provider; 
     string name = provider.ApplicationName; 

     return Membership.ValidateUser(userName, password); 
    } 

// 잘못된 일

 <membership> 
     <providers> 
      <clear/> 
      <add name="AspNetSqlMembershipProvider" 
       type="System...bla bla" 
       connectionStringName="LocalSqlServer" 
       enablePasswordRetrieval="false" 
       enablePasswordReset="true" 
       requiresQuestionAndAnswer="true" 
       requiresUniqueEmail="false" 
       passwordFormat="Hashed" 
       maxInvalidPasswordAttempts="5" 
       minRequiredPasswordLength="7" 
       minRequiredNonalphanumericCharacters="1" 
       passwordAttemptWindow="10" 
       passwordStrengthRegularExpression="" 
       applicationName="/" //Wrong 
      /> 
     </providers> 
    </membership> 

// 오른쪽 하나

  <membership> 
       <providers> 
       <clear/> 
      <add name="AspNetSqlMembershipProvider" 
       type="System.Web.Security.S.. bla bla" 
       connectionStringName="LocalSqlServer" 
       enablePasswordRetrieval="false" 
       enablePasswordReset="true" 
       requiresQuestionAndAnswer="true" 
       requiresUniqueEmail="false" 
       passwordFormat="Hashed" 
       maxInvalidPasswordAttempts="5" 
       minRequiredPasswordLength="7" 
       minRequiredNonalphanumericCharacters="1" 
       passwordAttemptWindow="10" 
       passwordStrengthRegularExpression="" 
       applicationName="MyAPPNAME" //Well :) 
      /> 
     </providers> 
    </membership>