2011-09-07 3 views
1

저는 C#과 RavenDB를 처음 접했기 때문에 이해가 부족합니다.RavenDB 사용자 이름과 암호를 확인하기위한 쿼리

현재 Windows Form 응용 프로그램이 있습니다. 양식 중 하나에서 두 개의 텍스트 상자와 하나의 단추가 있습니다. 이 두 개의 텍스트 상자는 사용자 이름과 비밀번호 입력으로 사용되며 사용자가 로그인 할 수 있도록 버튼이 분명히 있습니다. 사용자가 버튼을 클릭하면 메소드가 호출되고 두 입력의 내용이 두 개의 문자열 변수에 저장됩니다.

현재 RavenDB 데이터베이스에서 사용자 이름과 암호의 두 가지 샘플을 만들었습니다.

사용자가 제공 한 사용자 이름과 암호가 데이터베이스에 존재하는지 여부를 적절하게 확인하는 방법은 무엇입니까?

정말 도움이됩니다.

답변

6

이 질문에 대답하는 데는 두 가지 방법이 있습니다.

가) 당신은 Linq를 제공

session.Query<User>().Where(user=> user.Name = username && user.Password = pass).ToList(); 

b) 본의 문제를 사용하여 여러 속성에 대해 조회 할 수 있습니다 이것이 당신이 데이터베이스에 일반 텍스트로 암호를하는 당신이 해야 저장되어 있다고 가정한다는 것이다 결코 않습니다. 당신은 우리가 RaccoonBlog의 RavenDB의 샘플 애플리케이션에 있음을 구현하는 방법을 볼 수 있습니다 당신은 모든 암호를 저장하지 않는 좋은 보안 방법의 문제로

https://github.com/ayende/RaccoonBlog/blob/master/src/RaccoonBlog.Web/Models/User.cs

https://github.com/ayende/RaccoonBlog/blob/master/RaccoonBlog.Web/Areas/Admin/Controllers/LoginController.cs

3

, 오히려 당신이 저장 암호의 해시시.


  1. 서버에서 값을 읽고 암호의 해시 코드를 생성하여 암호를 저장합니다. 당신은

가 확인하려면 비밀번호

  • 스토어 자신의 이름과 유형 사용자의 까마귀 DB에서 문서 (예 : SHA256를 통해 같은) 해시를 생성하는 암호화 기능을 사용하여 해시해야하는 경우 전달하여 사용자 자격 증명 데이터베이스

    1. 쿼리 레이븐 DB에 주어진 이름과 암호 해시를 가진 사용자를 찾습니다.

    샘플 코드는

    var user = session.Query<User>() 
        .Where(u => u.UserName == "Alice" && u.HashedPassword == "hashPwd"); 
    
  • +0

    나는 경우에 시작하는 방법을 모르겠어요. UserLogin.cs라는 클래스가 있는데 두 개의 속성이 있습니다. 사용자 이름과 비밀번호. 현재 사용자 이름과 비밀번호가있는 두 개의 UserLogins가 있습니다. 이 모든 경우에 제대로 작동하려면 어떻게해야합니까? – Subby

    +0

    @Subby, Ayende가 게시 한 링크를 확인하십시오.두 개의 클래스가 있어야합니다. 첫 번째 것은 데이터를 보유하고 (UserLogin은 내가 가진 것으로, User로 이름을 바꿉니다) 실제로 LoginController와 같이 인증을 수행하는 두 번째 클래스입니다. – oleksii

    관련 문제