在asp.net web应用程序上使用WCF服务应用程序登录
本文关键字:应用程序 WCF 服务 登录 程序上 net web 应用 asp | 更新日期: 2023-09-27 17:51:19
我目前正在为一个学校项目开发一个约会网站,我目前正在尝试为它制作一个登录功能。我们不应该使用自动注册和登录功能。
我们与数据库的任何联系都应该通过WCF服务应用程序。我知道如何在不使用WCF的情况下实现它,但我现在需要使用它,搜索后我在谷歌上找不到这个。
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){
}
}
我已经用这个工作了几个小时,这个工作的注册部分…所以我真的做错了什么。我使用Visual Studio 2010和SQL Server 2008 R2。
(解决)这是我如何解决它
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?
{
...
你是故意的吗
if (obj.login(UserName, PassWord))
{
Session["me"] = UserName;
Response.Redirect("~/MyProfile.aspx");
} ...
建议按名称从WCF服务返回用户,如:
public tblUser login(string UserName);
在客户端,您可以通过名称检索用户:
var user = obj.login(UserName);
if (user != null && user.password == txtPassWord.Text)
DoLogin();
else
ShowError();