problem z logowaniem. Nie wyświetla zalogowania mimo braku błędów i kompilowania.. złe hasło i login

0

Witam może ktoś z Was bedzie mi wskazać co robie nie tak... Nie mogę się zalogowac pomimo poprawnie wpisywanych danych...Prubowałem 3 innych rozwiazan i to samo...loguje sie w web.config przez
<authentication mode="Windows" />

a oto kod do logowania.... bede wdzieczny za pomoc

   protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        string userName = Login1.UserName;
        string password = Login1.Password;

        bool result = UserLogin(userName, password);
        if ((result))
        {
           
            e.Authenticated = true;

        }
        else
        {

            e.Authenticated = false;
        }
    }
    private bool UserLogin(string userName, string password)
    {

         
        string conString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection
(conString
)
)
        {
             
            SqlCommand com = new SqlCommand("SELECT login FROM uzytkownik WHERE Login = @login AND Haslo = @haslo", con);

            // set the username and password parameters   
            com.Parameters.Add("@login", SqlDbType.NVarChar).Value = userName;
            com.Parameters.Add("@haslo", SqlDbType.NVarChar).Value = password;
            con.Open();     
            string result = Convert.ToString(com.ExecuteScalar());
            if (string.IsNullOrEmpty(result))
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
    protected void Login1_LoggedIn(object sender, EventArgs e)
    {

        if (string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
        {
            
            //if (Roles.IsUserInRole(Login1.UserName, "Admins"))
           // Login1.UserName = Label23.Text;
            Session["LoginName"] = Login1.UserName;

            Response.Redirect("profil.aspx?userr=" + Login1.UserName);
            //Label23.Visible = true;
            // else if (Roles.IsUserInRole(Login1.UserName, "Editors"))
            // Response.Redirect("mojprofil.aspx");
        }
    }
0

Nie możesz sie zalogować, bo za każdym razem bierzesz login i hasło z innych rekordów. Musisz stworzyć obiekt, najlepiej odrębną klase, gdzie będzie możliwe stworzenie tylko jednego obiektu tej klasy czyli tzw. singleton. Po stworzeniu takiej klasy singletonu stworzysz tylko raz obiekt zalogowanego użytkownika i będziesz miał do niej dostęp z całej aplikacji, łącznie z ustawianiem poszczególnych uprawnień dla danych użytkowników. Poczytaj o tym na MSDN.

Sesja w C# nie działają najlepiej, tak że lepiej z nich zrezygnować na rzecz klasy która tworzy zalogowanego uzytkownika, właśnie :)

0
sim-ns napisał(a)

Po stworzeniu takiej klasy singletonu stworzysz tylko raz obiekt zalogowanego użytkownika i będziesz miał do niej dostęp z całej aplikacji, łącznie z ustawianiem poszczególnych uprawnień dla danych użytkowników.

A co się stanie, gdy przejdzie na inną podstronę aplikacji?

Sesja w C# nie działają najlepiej

Czym są "sesje w C#" i dlaczego nie działają najlepiej?

0

Fakt, nie pomyslalem o podstronach w aplikacji :/

Przez sesje worumiem wywoływany przez Session[] tymczasowy bufor, który moze byc uruchomiony wraz z aplikacją, a nie działa to najlepiej bo trzeba mieć zawsze frameworka .NET w tej samej wersji, na którą aplikacja została napisana.

0

@sim-ns - o czym Ty tak właściwie piszesz? Sesja to mechanizm do przechowywania danych między żądaniami użytkowników, powszechne obejście problemu z bezstanowością HTTP. W aplikacjach ASP.NET nie trzeba mieć zainstalowanego żadnego Frameworka na maszynie klienckiej, wszystko jest na serwerze.

0

Dziekuje serdecznie.Juz sobie poradziłem...a wie ktos moze jak sprawdzić jaki jest wynik zapytania.? tzn chce przypisać ten wynik do zmiennej i go wyświetlić...Pomoże mi ktos??

Oto kod...

 private bool UserLogin(string userName, string password)
    {


        string conString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString))
        {

            SqlCommand com = new SqlCommand("SELECT login FROM uzytkownik WHERE Login = @login AND Haslo = @haslo", con);

            // set the username and password parameters   
            com.Parameters.Add("@login", SqlDbType.NVarChar).Value = userName;
            com.Parameters.Add("@haslo", SqlDbType.NVarChar).Value = password;
            con.Open();
            string result = Convert.ToString(com.ExecuteScalar());
            if (string.IsNullOrEmpty(result))
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }

    protected void Zaloguj_Click(object sender, EventArgs e)
    {
        this.Label1.Visible = true;
        string userName = this.Login.Text;
        string password = this.Haslo.Text;

        bool result = UserLogin(userName, password);
        if ((result))
        {
            this.Label1.Text = "zalogowano poprawnie ";
        }
        else { this.Label1.Text = "bład w logowaniu"; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        this.Label1.Visible = false;
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1