[英]SQL login asp.net
我在考慮登錄槽SQL,我創建了基本的登錄表單,如下所示
protected void btnLogin_Click(object sender, EventArgs e)
{
string cs="Data Source=Dev-PC;Initial Catalog=CodeSolution;User ID=sa; password=12345678"
SqlConnection con = new SqlConnection(cs);
con.Open();
String sqlCommand = "SELECT * FROM tblLogin WHERE "+
"username = @user AND password = @pwd"
SqlCommand cmd = new SqlCommand(sqlCommand, con);
cmd.Parameters.AddWithValue("@user", TextBox1.Text);
cmd.Parameters.AddWithValue("@pwd", TextBox2.Text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
Response.Redirect("Details.aspx");
}
else
{
Response.Write("<script>alert('Please enter valid Username and Password')</script>");
}
}
但這然后讓我開始思考,因為如果沒有登錄,人們可能會猜測Details.aspx的網址
因此,我想知道登錄是否成功,還要向tblLogin添加一列並存儲該用戶的sessionID。 然后頁面僅應檢查該用戶的sessionID是否等於tblLogin的sessionID。
我想知道這里兩件事:
刪除了一個錯誤,sqlCommand中的LIKE現在=
你似乎做這么多事情錯了,寫正確的答案會自動使這個問題太寬泛。 我將嘗試一下:
sa
帳戶,甚至不要用於開發。 tbl
前綴,這是多余的。 like
,而是要完全匹配。 解釋如何解決所有這些問題將需要太多的工作。 不要重新發明稱為授權和身份驗證的輪子。 為此,請使用安全的,經過測試且受支持的庫。
您可能需要研究ASP.NET成員資格或其后續ASP.NET Identity 。
並非您問題的確切答案,但這將是一個很好的指南/建議。
您擁有會話ID的想法一點也不差(取決於您的站點/系統的要求)。 但是在這種情況下,不是來自IIS的會話,因為您需要解密它,這將使您容易受到內聯攻擊(使您的DB / root文件夾可訪問)。
這是有關如何在登錄時獲取會話的會話ID的示例,但不是從IIS獲取的(您可以使用它來記錄日志):
string sessionId = System.Web.HttpContext.Current.Session.SessionID;
並且根據數據庫設計,最好有單獨的表來記錄用戶的會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.