사용자 이름과 암호를 확인할 수 없습니다. while 루프에 문제가 있습니다.

Direkz
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page 
{
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
        ViewState["LoginErrors"] = 0;
}

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
    if (YourValidationFunction(Login1.UserName, Login1.Password))
    {
       // e.Authenticated = true;
        Login1.Visible = false;
        MessageLabel.Text = "Successfully Logged In";
    }
    else
    {
        e.Authenticated = false;
    }
}

protected void Login1_LoginError(object sender, EventArgs e)
{
    if (ViewState["LoginErrors"] == null)
        ViewState["LoginErrors"] = 0;

    int ErrorCount = (int)ViewState["LoginErrors"] + 1;
    ViewState["LoginErrors"] = ErrorCount;

    if ((ErrorCount > 3) && (Login1.PasswordRecoveryUrl != string.Empty))
        Response.Redirect(Login1.PasswordRecoveryUrl);
}

private bool YourValidationFunction(string UserName, string Password)
{
    bool boolReturnValue = false;
    string strConnection = "server=example;database=TEST_dw;uid=test;pwd=test;";
    SqlConnection sqlConnection = new SqlConnection(strConnection);
    String SQLQuery = "SELECT UserName, Password FROM Login";
    SqlCommand command = new SqlCommand(SQLQuery, sqlConnection);
    SqlDataReader Dr;
    sqlConnection.Open();
    Dr = command.ExecuteReader();

    while (Dr.Read())
    {

        if ((UserName == Dr["UserName"].ToString()) && (Password ==     Dr["Password"].ToString()))

            {
                boolReturnValue = true;
                break;
            }


        Dr.Close();
        return boolReturnValue;
    }
}

}

코드가 오류없이 실행 중이지만 사용자 이름과 비밀번호를 확인하지 않고 잘못된 사용자 이름과 비밀번호로 성공적으로 로그인합니다. while 루프 및 bool 반환 값 구문 분석에 문제가 있습니다.

mybirthname

while 루프에서 판독기를 닫고의 boolReturnValue첫 번째 반복 에서 값 반환합니다 while. if check, 루프의 첫 번째 반복 에서 가 참이 아닌 경우 항상을 반환 false합니다.

// previous code

while (Dr.Read())
{
    if ((UserName == Dr["UserName"].ToString()) && (Password ==     Dr["Password"].ToString()))
    {
        boolReturnValue = true;
        break;
    }
}

Dr.Close();
return boolReturnValue;

코드는 다음과 같아야합니다. Debug를 사용하면 쉽게 볼 수 있습니다. 디버깅에 대한이 자습서가 유용 할 수 있습니다. 자습서

추신 또한 더 나은 접근 방식은 데이터베이스를 쿼리 하고이 암호와 사용자 이름을 가진 사용자가 있는지 확인하는 것입니다. 모든 사용자를 사용하지 않고 그 후에 루프를 수행하고 확인하십시오. 당신이 100000 사용자가있는 경우이 성능 문제가 될 것입니다 단지 말 ...

private bool YourValidationFunction(string UserName, string Password)
{

    string strConnection = "server=example;database=TEST_dw;uid=test;pwd=test;";
    SqlConnection sqlConnection = new SqlConnection(strConnection);

    sqlConnection.Open();

    String query = "SELECT Count(*) FROM Login WHERE UserName=@UserName AND Password=@Password";

    SqlCommand command = new SqlCommand(query, sqlConnection);
    command.Parameters.AddWithValue("@UserName", UserName);
    command.Parameters.AddWithValue("@Password", Password);

    int result = Convert.ToInt32(command.ExecuteScalar());

    sqlConnection.Close();

    return result != 0 ? true : false;
}

마지막 줄은 끈기 연산자 return result != 0 ? true : false;입니다. 이것은

if(result !=0)
   return true;
else
   return false;

나는 미래에 다른 클래스에 데이터 액세스 레이어를 작성하도록 조언합니다. 다음은 샘플 DataAccessLayer를 작성한 예제 질문입니다. 사용자 이름 또는 사용자 이메일 확인이 이미 존재합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Auth :: attempt가 사용자 이름과 암호를 확인하지 않습니다.

분류에서Dev

"이 웹 페이지에 리디렉션 루프가 있습니다"문제를 해결할 수 없습니다.

분류에서Dev

"이 웹 페이지에 리디렉션 루프가 있습니다"문제를 해결할 수 없습니다.

분류에서Dev

while 루프에서 결과를 생성 할 수 없습니다.

분류에서Dev

유효한 사용자 이름과 암호로 PuTTy를 사용하여 ssh 할 수 없습니다. 서버와 PuTTy 키보드 / 터미널이 동일한 지 확인하는 방법은 무엇입니까? 다른 문제?

분류에서Dev

while 루프에 들어갈 수 없습니다. 순서가 지정되지 않은지도를 사용하는 것과 관련이 있습니까?

분류에서Dev

로그인 문제가 있습니다. 사용자 이름과 비밀번호가 정확합니다.

분류에서Dev

이전에 가입 쿼리로 만든 해시 암호를 사용하여 로그인 할 수 없습니다.

분류에서Dev

로그인 MySQL에서 사용자 ID (사용자 이름 및 암호)을 검색 할 수 없습니다

분류에서Dev

APT를 사용하는 동안 호스트 이름을 확인할 수 없습니다. 무엇이 문제 일 수 있습니까?

분류에서Dev

APT를 사용하는 동안 호스트 이름을 확인할 수 없습니다. 무엇이 문제 일 수 있습니까?

분류에서Dev

특정 ECDSA 인증서에 사용할 수있는 암호가 없습니다.

분류에서Dev

영어가 아닌 암호를 가진 Windows 7 사용자 계정에 로그인 할 수 없습니다.

분류에서Dev

Apache Airlfow에 처음 로그인 할 때 사용자 이름과 암호를 묻습니다. 사용자 이름과 암호는 무엇입니까?

분류에서Dev

Hyper를 빌드 할 수 없습니다. 상자 이름에 잘못된 문자`-`가 있습니다.

분류에서Dev

사용자 암호를 변경했지만 이제 암호화 된 폴더에 액세스 할 수 없습니다.

분류에서Dev

사용자 암호를 변경했지만 이제 암호화 된 폴더에 액세스 할 수 없습니다.

분류에서Dev

작업자 노드의 calico-policy-container가 다시 시작 루프에 있습니다. 이유를 어떻게 확인할 수 있습니까?

분류에서Dev

Windows 암호가 변경되어 더 이상 Git을 사용할 수 없습니다. 제어판에 자격 증명 관리자가 없습니다.

분류에서Dev

Scrapy에서 사용자 이름과 비밀번호로 API를 사용할 수 없습니다.

분류에서Dev

Kali Linux는 사용자 이름과 암호를 계속해서 묻습니다! 로그인 할 수 없습니다!

분류에서Dev

``/``문자는 개체 이름에 사용할 수 없습니다.

분류에서Dev

탭 이름에 문자열을 사용할 수 없습니다.

분류에서Dev

Visual Studio 2012에서는 TFS에서 로그 아웃 할 수 없으므로 새 사용자 이름 / 암호를 입력 할 수 있습니다.

분류에서Dev

사용자 테이블 (MySql)에서 사용자 이름 및 암호 열을 선택할 수 없습니다.

분류에서Dev

케이크 PHP는 "잘못된 사용자 이름 및 암호"에 로그인 할 수 없습니다.

분류에서Dev

Azure vpn 오류이 확장 가능한 인증 프로토콜과 함께 사용할 수있는 인증서를 찾을 수 없습니다. (오류 798)

분류에서Dev

toupper없이 C에서 루프를 사용하여 char * 포인터를 소문자 / 대문자로 변환 할 수 없습니다.

분류에서Dev

원격 소스에서 Windows 8 공유에 연결할 수 없습니다. "사용자 이름 또는 암호가 올바르지 않습니다." 오류

Related 관련 기사

  1. 1

    Auth :: attempt가 사용자 이름과 암호를 확인하지 않습니다.

  2. 2

    "이 웹 페이지에 리디렉션 루프가 있습니다"문제를 해결할 수 없습니다.

  3. 3

    "이 웹 페이지에 리디렉션 루프가 있습니다"문제를 해결할 수 없습니다.

  4. 4

    while 루프에서 결과를 생성 할 수 없습니다.

  5. 5

    유효한 사용자 이름과 암호로 PuTTy를 사용하여 ssh 할 수 없습니다. 서버와 PuTTy 키보드 / 터미널이 동일한 지 확인하는 방법은 무엇입니까? 다른 문제?

  6. 6

    while 루프에 들어갈 수 없습니다. 순서가 지정되지 않은지도를 사용하는 것과 관련이 있습니까?

  7. 7

    로그인 문제가 있습니다. 사용자 이름과 비밀번호가 정확합니다.

  8. 8

    이전에 가입 쿼리로 만든 해시 암호를 사용하여 로그인 할 수 없습니다.

  9. 9

    로그인 MySQL에서 사용자 ID (사용자 이름 및 암호)을 검색 할 수 없습니다

  10. 10

    APT를 사용하는 동안 호스트 이름을 확인할 수 없습니다. 무엇이 문제 일 수 있습니까?

  11. 11

    APT를 사용하는 동안 호스트 이름을 확인할 수 없습니다. 무엇이 문제 일 수 있습니까?

  12. 12

    특정 ECDSA 인증서에 사용할 수있는 암호가 없습니다.

  13. 13

    영어가 아닌 암호를 가진 Windows 7 사용자 계정에 로그인 할 수 없습니다.

  14. 14

    Apache Airlfow에 처음 로그인 할 때 사용자 이름과 암호를 묻습니다. 사용자 이름과 암호는 무엇입니까?

  15. 15

    Hyper를 빌드 할 수 없습니다. 상자 이름에 잘못된 문자`-`가 있습니다.

  16. 16

    사용자 암호를 변경했지만 이제 암호화 된 폴더에 액세스 할 수 없습니다.

  17. 17

    사용자 암호를 변경했지만 이제 암호화 된 폴더에 액세스 할 수 없습니다.

  18. 18

    작업자 노드의 calico-policy-container가 다시 시작 루프에 있습니다. 이유를 어떻게 확인할 수 있습니까?

  19. 19

    Windows 암호가 변경되어 더 이상 Git을 사용할 수 없습니다. 제어판에 자격 증명 관리자가 없습니다.

  20. 20

    Scrapy에서 사용자 이름과 비밀번호로 API를 사용할 수 없습니다.

  21. 21

    Kali Linux는 사용자 이름과 암호를 계속해서 묻습니다! 로그인 할 수 없습니다!

  22. 22

    ``/``문자는 개체 이름에 사용할 수 없습니다.

  23. 23

    탭 이름에 문자열을 사용할 수 없습니다.

  24. 24

    Visual Studio 2012에서는 TFS에서 로그 아웃 할 수 없으므로 새 사용자 이름 / 암호를 입력 할 수 있습니다.

  25. 25

    사용자 테이블 (MySql)에서 사용자 이름 및 암호 열을 선택할 수 없습니다.

  26. 26

    케이크 PHP는 "잘못된 사용자 이름 및 암호"에 로그인 할 수 없습니다.

  27. 27

    Azure vpn 오류이 확장 가능한 인증 프로토콜과 함께 사용할 수있는 인증서를 찾을 수 없습니다. (오류 798)

  28. 28

    toupper없이 C에서 루프를 사용하여 char * 포인터를 소문자 / 대문자로 변환 할 수 없습니다.

  29. 29

    원격 소스에서 Windows 8 공유에 연결할 수 없습니다. "사용자 이름 또는 암호가 올바르지 않습니다." 오류

뜨겁다태그

보관