ASP.NET - Failure text does not show when invalid credentials are entered

Asked By Karishma on 22-Mar-11 05:58 PM
I have used the Login control for my Login page. here is my code

 <asp:Login ID="Login1" runat="server" BackColor="#EFF3FB" BorderColor="#B5C7DE" BorderPadding="4"
            BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em"
            ForeColor="#333333" OnAuthenticate="Login1_Authenticate"  OnLoginError="Login1_LoginError"  
            CreateUserText="Not registered Yet? Sign UP!!" CreateUserUrl="Membership/Register.aspx" >
            <TextBoxStyle Font-Size="0.8em" />
            <LoginButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px"
                Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284E98" />
            <InstructionTextStyle Font-Italic="True" ForeColor="Black" />
            <TitleTextStyle BackColor="#507CD1" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
            <LayoutTemplate>
                <table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse">
                    <tr>
                        <td>
                            <table border="0" cellpadding="0">
                                <tr>
                                    <td align="center" colspan="2" style="font-weight: bold; font-size: 0.9em; color: white;
                                        background-color: #507cd1">
                                        Log In</td>
                                </tr>
                                <tr>
                                    <td align="right">
                                        <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label></td>
                                    <td>
                                        <asp:TextBox ID="UserName" runat="server" Font-Size="0.8em"></asp:TextBox>
                                        <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
                                            ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="Login1">*</asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right">
                                        <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label></td>
                                    <td>
                                        <asp:TextBox ID="Password" runat="server" Font-Size="0.8em" TextMode="Password"></asp:TextBox>
                                        <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
                                            ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="Login1">*</asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2">
                                        <asp:CheckBox ID="RememberMe" runat="server" Text="Remember me next time." />
                                    </td>
                                </tr>
                                <tr>
                                    <td align="center" colspan="2" style="color: red">
                                        <asp:Literal ID="FailureText" runat="server" EnableViewState="False" Visible="False"></asp:Literal>
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right" colspan="2">
                                        <asp:Button ID="LoginButton" runat="server" BackColor="White" BorderColor="#507CD1"
                                            BorderStyle="Solid" BorderWidth="1px" CommandName="Login" Font-Names="Verdana"
                                            Font-Size="0.8em" ForeColor="#284E98" Text="Log In" ValidationGroup="Login1" />
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2">
                                        <asp:HyperLink ID="CreateUserLink" runat="server" NavigateUrl="Membership/Register.aspx">Not registered Yet? Sign UP!!</asp:HyperLink>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>
        </asp:Login>


The highlighted part is the event handler that is mentioned here is the codebehind

 protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            HospitalCommon  objDb = new HospitalCommon();

            string User_Name = Login1.UserName;
            string Password = Login1.Password;
            

            bool RememberMeUser = Login1.RememberMeSet;

            bool Login = objDb.CheckUser(User_Name, Password);
           
           

            if (Login == true)
            {
                DataSet ds = new DataSet();
                int User_Id = objDb.ValidateAdminUser(User_Name, Password);
                ds = objDb.GetUser_View(User_Id);
                DataRow[] rows = ds.Tables[0].Select("User_Name ='" + User_Name + "'AND User_Password = '"+Password+"'");
                string roles = rows[0]["Role_Text"].ToString();
                
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, User_Name, DateTime.Now, DateTime.Now.AddMinutes(50), RememberMeUser, roles);

                string hashCookies = FormsAuthentication.Encrypt(ticket);

                HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies);
                Response.Cookies.Add(cookie);
                Response.Redirect("http://localhost:52392/Default.aspx/");

                
            }
            else
            {
                
                Login1.FailureText="UserName//Password combination not valid";
           }
            }
        protected void Login1_LoginError(object sender, EventArgs e)
        {
            Response.Redirect("http://localhost:52392/Login.aspx/");
            Login1.FailureText = "UserName//Password combination not valid";

            Login1.UserName = "";
            TextBox user = (TextBox)Login1.FindControl("UserName");
            user.Text = "";
        }


I am a bit confused what to write in the else part where I give enter a string for FailureText  but I do the same thing in the LoginError event handler . Can anyone please tell me where I may be going wrong!!
Sahil Kumar replied to Karishma on 23-Mar-11 12:31 AM
Hi,

    Your events are not at all getting fired you its just not displaying error message.

Is it redirecting to error page as per you code ?
Have you tried to debug it?

Try out it should work....