C# 在asp.net web应用程序上使用WCF服务应用程序登录

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 =

我目前正在为一个学校项目开发一个交友网站,我目前正在尝试为它制作一个登录功能。我们不应该使用自动注册和登录功能

我们与数据库的任何联系都应该通过WCF服务应用程序进行。我知道如何在不使用WCF的情况下实现它,但我现在需要使用它,搜索后在Google上找不到它

 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();