2016-05-30 9 views
0

Ich mache eine Login-Seite in ASP.NET, und ich möchte einen Benutzer nach 3 fehlgeschlagenen Versuchen blockieren und entsperren ihn nach 10 Minuten. Ich habe kein Login-Steuerelement verwendet, daher kann ich den Mitgliedschaftsanbieter nicht verwenden. Daher habe ich über Timeout nachgedacht. Wie kann ich den Code ändern, um den Benutzer zu blockieren und zu entsperren?Wie Verwenden von Timeout in ASP.NET-Anwendung?

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; 
using System.Configuration; 
using System.Data; 
using Replicon.Cryptography.SCrypt; 

namespace WebApplication1 
{ 
    public partial class SignIn : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     public class LoginAttempt { public DateTime AttemptTime {get;set;} } 
     protected void Button1_Click(object sender, EventArgs e) 
     { 
      String CS = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionString1"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(CS)) 
      { 

       SqlCommand cmd = new SqlCommand("select * from Users where [email protected]", con); 
       cmd.Parameters.Add("@Username", Username.Text); 
       con.Open(); 
       SqlDataAdapter sda = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       sda.Fill(dt); 
       if (dt.Rows.Count != 0) 
       { 
        foreach (DataRow row in dt.Rows) 
        { 
         if (Replicon.Cryptography.SCrypt.SCrypt.Verify(Password.Text, (string)row["Password"])) 
         { 
          Session["USERNAME "] = Username.Text; 
          Response.Redirect("~/UserHome.aspx"); 
          return; 
         } 

         { lblError.Text = "Invalid Username or Password !"; } 
        } 
       } 


      } 
     } 


    } 
} 

Antwort

0

Sie können Sitzung verwenden, wenn Sie Fehler konfrontiert Sie Sitzungswert in der globalen asax

if(Session["DateTime"]==null) 
{ 
String CS = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionString1"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(CS)) 
      { 

       SqlCommand cmd = new SqlCommand("select * from Users where [email protected]", con); 
       cmd.Parameters.Add("@Username", Username.Text); 
       con.Open(); 
       SqlDataAdapter sda = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       sda.Fill(dt); 





       if (dt.Rows.Count != 0) 
       { 
        foreach (DataRow row in dt.Rows) 
        { 
         if (Replicon.Cryptography.SCrypt.SCrypt.Verify(Password.Text, (string)row["Password"])) 
         { 
          Session["USERNAME "] = Username.Text; 
          Response.Redirect("~/UserHome.aspx"); 
          return; 
         } 

         { lblError.Text = "Invalid Username or Password !"; } 
        } 
       } 
else 
{ 
if(Convert.ToInt32(Session["errorlogin"])>3) 
{ 
    Session["DateTime"]=DateTime.Now; 
} 
Session["errorlogin"]=Convert.ToInt32(Session["errorlogin"])+1; 


} 
} 
} 
+0

Und in Global.asax Erstausbildung müssen, was soll ich ändern? –

+0

in Session_Start erste Sitzung ["DateTime"] und Sitzung ["errorlogin"] –

+0

Initialisieren Sie sie mit welchem ​​Wert? –