我想创建一个简单的登录页面,而不是只注册我在SQL数据库中使用的用户名和密码。这就是我现在为button1编写的内容:
string connection_string = "Path to database";
SqlConnection connect = new SqlConnection();
connect.ConnectionString = connection_string;
connect.Open();
string sql = "Select * FROM Register where username=@username and password=@password";
SqlCommand 1 = new SqlCommand("username",textbox1User.text);
SqlCommand 2 = new SqlCommand("password",textbox2pass.text);
这就是我现在所拥有的。我需要做其余的登录页面,如果值正常,那么我将被重定向到页面上。但我还需要知道如何通过键入url to file来保护页面不被其他用户访问。所以它应该只在我登录时才有用。
答案 0 :(得分:6)
首先,我必须祝贺您希望为SQL使用参数。许多初学者都没有这样做,导致可怕的SQL注入攻击。
其次,你真的应该哈希你的密码。永远不要存储纯文本密码。由于哈希密码的确切方式存在争议并且会使代码复杂化,因此我暂时将其置于一边。
现在,继续讨论实际问题。首先,代码中存在一些错误。首先是参数被创建错误,你所拥有的应该更多的是:
using(SqlConnection conn = new SqlConnection("connection string"))
{
SqlCommand cmd = new SqlCommand("Select * FROM Register where username=@username and password=@password", conn);
cmd.Parameters.AddWithValue("@username", textbox1User.Text);
cmd.Parameters.AddWithValue("@password", textbox2User.Text);
}
(有关使用的更多信息,请参阅http://msdn.microsoft.com/en-us/library/yh598w02.aspx。这是一个很好的习惯)
完成后,为了轻松验证登录,您可以为您的SqlCommand执行以下操作:
SELECT COUNT(*) FROM Register WHERE username=@username AND password=@password
然后在添加参数后添加到代码中,但在using
上的右括号之前:
conn.Open();
int result = Convert.ToInt32(cmd.ExecuteScalar());
如果没有找到用户, result
将为0;如果找到一个用户,则为1(如果您可以拥有多个具有相同用户名的用户,则此范围之外还有其他问题)。
现在,至于强制执行访问控制,请查看http://support.microsoft.com/kb/301240您感兴趣的术语是"表单身份验证"和" web.config授权"。请注意,提供的链接中的代码示例有点过时,但一般来说,显示如何完成您的要求。
这应该让你开始走上正轨。
答案 1 :(得分:-1)
您也可以使用HTACCESS控制您的内容并使用密码保护它。这是最简单的方法,因为您不需要担心SQL和存储密码。