我是C#的新手。我正在使用VS2010和LINQ。 继承人我的问题.. 我有一个登录页面,有2个文本框和确认按钮。按下按钮时,应用程序应检查表uporabniki中的用户名和密码,如果正确,则重定向..
如何将所有用户名和密码存储到List中,然后遍历列表并检查匹配?
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;
}
谢谢你, 贝尼
答案 0 :(得分:3)
您应该将检查添加到查询中,类似这样的事情:
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评论,但你应该存储一个哈希而不是明文密码。
答案 1 :(得分:1)
你想要更像的东西:
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"]);
等等...
答案 2 :(得分:1)
试试这个
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
}
}
答案 3 :(得分:0)
users
变量实现了一个名为IEnumerable<T>
的接口,其中T
等于string
。
要从List<string>
获取IEnumerable<string>
,最简单的路线是使用LINQ扩展方法ToList()
,所以:
List<String> upo =users.ToList();
答案 4 :(得分:0)
您确实需要使用Hash存储任何密码。例如MD5,并检查它。
using System.Security.Cryptography;
using (MD5 hash = MD5.Create())
{password = GetMd5Hash(hash,passwordString}