C# 在asp.net web应用程序上使用WCF服务应用程序登录
我目前正在为一个学校项目开发一个交友网站,我目前正在尝试为它制作一个登录功能。我们不应该使用自动注册和登录功能 我们与数据库的任何联系都应该通过WCF服务应用程序进行。我知道如何在不使用WCF的情况下实现它,但我现在需要使用它,搜索后在Google上找不到它C# 在asp.net web应用程序上使用WCF服务应用程序登录,c#,asp.net,sql,login,passwords,C#,Asp.net,Sql,Login,Passwords,我目前正在为一个学校项目开发一个交友网站,我目前正在尝试为它制作一个登录功能。我们不应该使用自动注册和登录功能 我们与数据库的任何联系都应该通过WCF服务应用程序进行。我知道如何在不使用WCF的情况下实现它,但我现在需要使用它,搜索后在Google上找不到它 public bool login(string UserName, string PassWord, bool isActive = true) { try { DALDataContext db =
public bool login(string UserName, string PassWord, bool isActive = true) {
try {
DALDataContext db = new DALDataContext();
var qry = from m in db.tblUsers
where m.userName == UserName && m.password == PassWord && m.isActive == isActive
select m;
if (qry.Count() > 0) {
return true;
} else {
return false;
}
}
catch (Exception) {
return false;
}
}
我就是这样做的,所以如果我在我的web应用程序中实现它,这应该是可行的
像这样:
ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
protected void btnLoginUser_Click1(object sender, EventArgs e) {
try {
string UserName = txtUserName.Text;
string PassWord = txtPassWord.Text;
obj.login(UserName, PassWord);
if (true) {
Session["me"] = UserName;
Response.Redirect("~/MyProfile.aspx");
}
}
catch (Exception){
}
}
我已经做了几个小时了,注册部分很有效。。。所以我做错了什么事。我正在使用VisualStudio2010和SQLServer2008R2
[已解决]
我就是这样解决的
protected void btnLoginUser_Click1(object sender, EventArgs e)
{
try
{
string UserName = txtUserName.Text;
string PassWord = txtPassWord.Text;
bool isActive = true;
if (obj.login(UserName, PassWord, isActive))
{
Session["me"] = UserName;
Response.Redirect("~/MyProfile.aspx");
}
else
{
lblErr.Text = "fail";
}
}
catch (Exception)
{
}
}
}
}您忽略了登录方法的返回值:
obj.login(UserName, PassWord); // <-- returns true/false.
if (true) // <-- Why?
{
...
建议按名称从WCF服务返回用户,如:
public tblUser login(string UserName);
在客户端,您可以按名称检索用户:
var user = obj.login(UserName);
if (user != null && user.password == txtPassWord.Text)
DoLogin();
else
ShowError();
我只是在玩vs中的一些代码,在if上呆了几个小时,它一直在登录,直到需要检查它是否为真,我现在就这样做了'if(obj.login(UserName,PassWord)){Session[“me”]=UserName;Response.Redirect(~/MyProfile.aspx”);}否则{lblErr.Text=“fail”}这就是if(表达式)所做的<代码>表达式必须计算为true才能输入块
obj.login(用户名、密码)
将为true或false,因此当obj.login
返回true时,您将只在if
块中输入。正如您现在看到的,if(true)
,将始终进入if块。好的,对不起,我看到了您更新的注释。现在到底有什么不起作用?你收到错误了吗?我没有收到任何错误,只是当我写下正确的密码时,它没有登录并将我重定向到MyProfile.aspx,它应该检查我写的内容,然后检查用户名是否存在和paswword,但现在当我尝试在just note中登录时,它只是说失败,任何检查WCF响应的人都可以看到用户密码。可能不是您想要的。密码可以在DB中加密。在这种情况下,应该在比较之前对其进行解密。否。您只能在服务器上检查密码。永远不要在客户机上这样做。
var user = obj.login(UserName);
if (user != null && user.password == txtPassWord.Text)
DoLogin();
else
ShowError();