[英]C# retrieving username and password from data table
我是C#的新手。 我正在使用VS2010和LINQ。 这是我的问题。.我有一个登录页面,带有2个文本框和确认按钮。 当按下按钮时,应用程序应该从表uporabniki中检查用户名和密码,如果正确,则重定向。
如何将所有用户名和密码存储到列表中,然后遍历列表并检查是否匹配?
protected void Button1_Click(object sender, EventArgs e)
{
WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();
var users = from usr in db.uporabnikis select usr.username;
List<String> upo = new List<String>();
upo = (List<String>) users;
}
谢谢贝尼
您应该只将检查添加到查询中,就像这样:
WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();
bool validLogin = (from usr in db.uporabnikis
where usr.username == txtUserName.Text and
usr.password == txtPassword.Text
select true).SingleOrDefault();
if(validLogin)
// Do stuff
我确实同意上述nonnb的评论,但您应该存储一个散列而不是纯文本密码。
您想要更多类似的东西:
var userInfo = (from usr in db.uporabnikis where usr.username == Request.Form["username"] select {usr.username, usr.passwordHash, usr.salt).FirstOrDefault();
bool loggedIn = passwordHash == HashPassword(usr.username, usr.salt, Request.Form["password"]);
等等...
尝试这个
protected void Button1_Click(object sender, EventArgs e)
{
WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();
var users = from usr in db.uporabnikis
select usr.username,usr.password;
bool result = false;
foreach(var user in users)
{
if(user.username.Equals("usernametocheck") && user.password.Equals("passwordtocheck"))
{
result = true;
break;
}
}
if(result)
{
//code to redirect
}
else
{
//Display error
}
}
或者你可以试试这个
protected void Button1_Click(object sender, EventArgs e)
{
WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();
int recordCount = 0;
recordCount = db.uporabnikis.where(x => x.username == "usernametocheck" && x.password = "passwordtocheck").Count();
if (recordCount > 0)
{
//code to redirect
}
else
{
//Display error
}
}
users
变量实现了一个称为IEnumerable<T>
的接口,其中T
等于string
。
要从IEnumerable<string>
获取List<string>
,最简单的方法是使用LINQ扩展方法ToList()
,因此:
List<String> upo =users.ToList();
您确实需要使用哈希存储任何密码。 例如MD5,并进行检查。
using System.Security.Cryptography;
using (MD5 hash = MD5.Create())
{password = GetMd5Hash(hash,passwordString}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.