0

작은 MVC4 프로젝트에서 SimpleMembershipProvider를 구현 중이며 이미 지정된 사용자 및 역할 테이블 (sp_person 및 sp_role)을 사용하여 고객 제공 DB를 사용하여 데이터베이스 연결을 초기화 할 수 있습니다.SimpleMembershipProvider에 대한 암호 필드 지정

로그인 할 때 MVC 앱이 올바른 암호임을 알았지 만 일반적인 "잘못된 암호"오류 메시지로 내 암호를 거부하는 것이 문제입니다. 나는 SimpleMembershipProvider가 암호를 어디에 저장해야하는지 ("ecampus_password"필드의 sp_person 테이블에 있음) 모르기 때문에 인증에 실패하는 것입니다.

SimpleMembershipProvider에게 저장된 암호를 찾는 위치를 어떻게 알 수 있습니까? 사전에

감사합니다,

+0

SimpleMembership에는 기본 테이블 세트가 함께 제공됩니다. –

+0

나는 다른 것을 바꾸지 않았다. Google은 나에게 아무것도주지 않습니다. –

+0

내가 아는 한 SimpleMembership은 몇 가지 테이블과 작동하지만, 주요 테이블은 UserProfile (이 테이블은 기본적으로 UserId와 userName을가집니다.) 및 _Membership (UserId와 사용자에 대한 모든 로그인 관련 정보가 있습니다). 어쩌면 일어날 일은 로그온 기능이 _Membership에 반대하는 것입니다. 오히려 당신이 생각하는 것입니다. 이 _Membership 테이블을 사용하여 암호 및 로그인 관련 정보를 저장하는 것이 좋습니다. 알려주세요 –

답변

1

신경 끄시 고 레스터

, 나는 SimpleMembershipProvider는 해결책이 아니다는 것을 발견했다. 이 경우 사용자 지정 공급자를 구현해야합니다.

단계를 다음과 같이

  • 가 (만 sp_personsp_role 가져 오기, 내 경우) 인증 방식에 관련된 테이블 만 소비하는 프로젝트에 엔터티 데이터 모델을 추가합니다.
  • System.Web.ApplicationServices을 프로젝트에 대한 참조로 추가하십시오.
  • 프로젝트에 새 클래스를 추가하고 System.Web.Securityusing 문으로 지정하고 클래스를 MembershipProvider에서 상속 받도록합니다. MembershipProvider은 추상 클래스이므로 질문 할 때 구현하십시오.
  • 데이터 모델을 추가 할 때 생성되는 Entity Framework 클래스에 개체를 추가합니다. 일반적으로 <CONNECTION_NAME>Entities이라고하며 모델을 만들 때 변경할 수 있습니다. 이런 식으로 뭔가가 :

    public class MyMembershipProvider : MembershipProvider 
    { 
        private MYCONNECTIONEntities db = new MYCONNECTIONEntities(); 
    } 
    
  • 엄격하게, 당신은 클래스의 모든 재산 및 방법을 구현해야 할 수도 있지만, 인증을 위해, 당신은 ValidateUser()를 구현해야합니다. 단순히 LINQ 쿼리를 사용하여 데이터 모델에서 사용자를 검색하면됩니다.

    var list = from u in db.st_person 
          where u.ecampus_login == username 
          && u.person_password == password 
          select u; 
    return list.Count() > 0; 
    
  • web.config에서 <authentication> 요소 아래에이 같은 새로운 공급자를 추가 :

    <membership defaultProvider="MyMembershipProvider"> 
        <providers> 
        <clear /> 
        <add name="MyMembershipProvider" type="PROJECT_NAME.MyMembershipProvider"/> 
        </providers> 
    </membership> 
    
  • 컴파일 및 테스트 다음은 내 꺼야.