用户登录模块问题!!从前台界面输入用户名和密码如何与后台定义的类做比较,并成功验证登录进入系统!!

carlnaeo 2010-04-23 10:17:00
以下是我做的三层架构:
实体类:
using System;
using System.Collections.Generic;
using System.Text;


namespace BYJ.Entity
{
[Serializable]
public class UserInfo
{
private char zgxm;
private string zgbh;
private string bmbh;
private string bmmc;
private string password;


public char Zgxm
{
get { return this.zgxm; }
set { this.zgxm = value; }
}
public string Zgbh
{
get { return this.zgbh; }
set { this.zgbh = value; }
}
public string Bmbh
{
get { return this.bmbh; }
set { this.bmbh = value; }
}
public string Bmmc
{
get { return this.bmmc; }
set { this.bmmc = value; }
}
public string Password
{
get { return this.password; }
set { this.password = value; }
}
}
}


业务逻辑层接口:
using System;
using System.Collections.Generic;
using System.Text;
using BYJ.Entity;

namespace BYJ.IBLL
{
public interface IUserBll
{
/**/
/// <summary>
/// 职工登录
/// </summary>
/// <param name="zgxm">职工登录名</param>
/// <param name="password">职工密码</param>
/// /// <returns>如果登录成功,则返回true,否则返回false</returns>
bool Login(string zgxm, string password);
/**/
/// <summary>
/// 取得全部职工信息
/// </summary>
/// <returns>职工实体类集合</returns>
IList<UserInfo> GetAll();
/// <summary>
/// 通过职工姓名取得职工信息
/// </summary>
/// <param name="zgbh"></param>
/// <returns></returns>
UserInfo GetByName(string zgxm);
/**/
/// <summary>
/// 通过职工权限返回职工操作的权限功能
/// </summary>
/// <param name="zgbh">职工编号</param>
/// <param name="zgqx">职工权限</param>
/// <returns>如果返回权限值为1,为普通用户,返回值为2,则是管理员用户</returns>
bool yhxx(string zgbh, string zgqx);
}
}

数据访问层接口
using System;
using System.Collections.Generic;
using System.Text;
using BYJ.Entity;

namespace BYJ.IDAL
{
public interface IUserDAL
{
///<summary>
///返回所有职工信息
///</summary>
///<returns></returns>
IList<UserInfo> GetAll();
/**/
/// <summary>
/// 会员登录
/// </summary>
/// <param name="name">会员登录名</param>
/// <param name="password">会员密码</param
/// /// <returns>如果登录成功,则返回true,否则返回false</returns>
bool Login(string zgxm, string password);
/// <summary>
/// 是否是本站的用户
/// </summary>
/// <param name="name"></param>
/// <param name="pwd"></param>
/// <returns></returns>
bool IsRight(string zgxm, string password);
///<summary>
///通过职工姓名返回职工信息
///</summary>
///<param name="zgxm"></param>
///<returns></returns>
UserInfo GetByName(string zgxm);
}
}


数据访问层:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using BYJ.IDAL;
using BYJ.Entity;


namespace BYJ.SQLServerDAL
{
public class UserDAL:IUserDAL
{
public bool IsRight(String zgxm, string password)

{
string sql = "select '" + zgxm + "','"+password+"' from yhxx ";


try
{
SQLServerDALHelper.ExecuteSQLReader(sql);
return true;
}
catch
{
return false;
}

}
}



业务逻辑层:

using System;
using System.Collections.Generic;
using System.Text;
using BYJ.Entity;
using BYJ.IBLL;
using BYJ.IDAL;
using BYJ.SQLServerDAL;

namespace BYJ.BLL
{
public class UserBLL : IUserBll
{
public bool ChangePassword(string zgxm, string password)
{
return ChangePassword(zgxm, password);
}
/**/
/// <summary>
/// 会员登录
/// </summary>
/// <param name="zgxm">会员登录名</param>
/// <param name="password">会员密码</param>
/// <returns>如果登录成功,则返回true 否则返回false</returns>
public bool Login(string zgxm, string password)
{
return Login (zgxm, password);
}

private bool IsRight(string zgxm, string password)
{
return IsRight(zgxm, password);
}

/**/
/// <summary>
/// 取得全部会员信息
/// </summary>
/// <returns>会员实体类集合</returns>
public IList<UserInfo> GetAll()
{
UserDAL user = new UserDAL();
IList<UserInfo> userCollection = new List<UserInfo>();
userCollection=user.GetAll();
return userCollection;

}
/// <summary>
/// 通过会员名返回会员信息
/// </summary>
/// <param name="username"></param>
/// <returns></returns>
public UserInfo GetByName(string zgxm)
{
return GetByName(zgxm);
}
}
}

表示层,登陆页面:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BYJ.BLL;
using BYJ.Entity;
using BYJ.IBLL;
using BYJ.IDAL;
using BYJ.SQLServerDAL;


public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
/// <summary>
/// 提交登录信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

protected void Button1_Click(object sender, EventArgs e)
{
string zgxm = this.TextBox1.Text.ToString();
string password = this.TextBox2.Text.ToString();
//如果信息符合把登录名赋给Session
if (UserBLL.IsRight(zgxm , password ))
{
Session.Add("zgxm", zgxm );
Response.Redirect("Default.aspx");
}
else
{
Response.Redirect("登录失败");
}
}








/// <summary>
/// 清空登录信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
this.TextBox1.Text = "";
this.TextBox2.Text = "";
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{

}
}



求高人解答,怎样才能进入系统并成功跳转到Default页面!
...全文
3828 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sxiaohui8709253 的回复:]
我贴个三层的小例子 你看看哈


C# code

//数据库底层类


namespace DAL
{
public class SqlHelper
{
private SqlConnection sqlconn;
public SqlHelper()
{
sqlconn = new SqlConnection("server=(loc……
[/Quote]谢谢!!你太好了!!
sxiaohui8709253 2010-04-23
  • 打赏
  • 举报
回复
我贴个三层的小例子 你看看哈


//数据库底层类


namespace DAL
{
public class SqlHelper
{
private SqlConnection sqlconn;
public SqlHelper()
{
sqlconn = new SqlConnection("server=(local);database=db_WebSetManageByXml;uid=sa;pwd=000000");
}
public void Open()
{
if (sqlconn == null)
{
sqlconn = new SqlConnection("server=(local);database=db_WebSetManageByXml;uid=sa;pwd=000000");
sqlconn.Open();
}
else if(sqlconn.State ==ConnectionState.Closed)
{
sqlconn.Open();
}
else if (sqlconn.State == ConnectionState.Broken)
{
sqlconn.Close();
sqlconn.Open();
}
}
public void Close()
{
sqlconn.Close();
}
public int RunSafeSql(string safeSql)
{
Open();
try
{
using (SqlCommand sqlcmd = new SqlCommand(safeSql, sqlconn))
{
int result = sqlcmd.ExecuteNonQuery();
return result;
}
}
catch (SqlException ex)
{
throw ex;
}
finally
{
Close();
}
}


public DataTable RunSafeSqlGetDt(string safeSql)
{
Open();
try
{
using (SqlCommand sqlcmd = new SqlCommand(safeSql, sqlconn))
{
using (SqlDataAdapter sqladt = new SqlDataAdapter(sqlcmd))
{
DataSet ds = new DataSet();
sqladt.Fill(ds);
return ds.Tables[0];
}
}
}
catch (SqlException ex)
{
throw ex;
}
finally
{
Close();
}
}

}
}





//业务实体类
namespace Model
{
public class User
{
private string userNo;

public string UserNo
{
get { return userNo; }
set { userNo = value; }
}
private string loginName;

public string LoginName
{
get { return loginName; }
set { loginName = value; }
}
private string loginPassward;

public string LoginPassward
{
get { return loginPassward; }
set { loginPassward = value; }
}
private string roleNo;

public string RoleNo
{
get { return roleNo; }
set { roleNo = value; }
}
}
}



//接口层我省略了




//业务逻辑层

namespace BLL
{
public class UserService
{
SqlHelper sqlhelper = new SqlHelper();
/// <summary>
/// 验证用户登录,返回用户登录信息
/// </summary>
/// <param name="user">用户实体类</param>
/// <returns>用户信息</returns>
public string UserLogin(User user)
{

string returnstr = "";
string safeString = "select * from tb_User where LoginName=" + "'" + user.LoginName + "'";
DataTable datatable = sqlhelper.RunSafeSqlGetDt(safeString);
if (datatable.Rows.Count>0)
{
string safeString1 = "select * from tb_User where LoginName="+"'"+ user.LoginName +"'"+ " and LoginPassward=" +"'"+ user.LoginPassward+"'";
DataTable datatable1 = sqlhelper.RunSafeSqlGetDt(safeString1);
if (datatable1.Rows.Count>0)
{

string safeString2 = "select a.UserNo,a.LoginName,b.RoleName from tb_User a inner join tb_Role b on a.RoleNo=b.RoleNo where a.LoginName=" + "'" + user.LoginName + "'" + " and a.LoginPassward=" + "'" + user.LoginPassward + "'";

DataTable dt = sqlhelper.RunSafeSqlGetDt(safeString2);
returnstr += dt.Rows[0][0].ToString() + ",";
returnstr += dt.Rows[0][1].ToString() + ",";

returnstr += dt.Rows[0][2].ToString() + ",";


}
else
{
returnstr = "2";
}
}
else
{
returnstr = "1";
}
return returnstr;
}

}
}




//前台登陆

protected void btnAdminLogin_Click(object sender, EventArgs e)
{
if (this.txtLoginName.Value.ToString().Trim() == string.Empty || this.txtLoginPassward.Value.ToString().Trim() == string.Empty || this.txtCheckCode.Value.ToString().Trim() == string.Empty)
{
this.spanCheckUserLogin.InnerHtml = "<font color=red>用户名或密码或验证码不能为空!</font>";


}
else if (this.txtCheckCode.Value.ToString().Trim() != Request.Cookies["CheckCode"].Value.ToString())
{
this.spanCheckUserLogin.InnerHtml = "<font color=red>验证码错误!</font>";


}
else
{
UserService userservice = new UserService();
User user = new User();
user.LoginName = this.txtLoginName.Value.ToString().Trim();
user.LoginPassward = this.txtLoginPassward.Value.ToString().Trim();
string userinfo = userservice.UserLogin(user);
if (userinfo.Trim() == "1")

this.spanCheckUserLogin.InnerHtml = "<font color=red>用户名不存在!</font>";

else if (userinfo.Trim() == "2")
this.spanCheckUserLogin.InnerHtml = "<font color=red>密码错!</font>";
else
{
string[] array = userinfo.Split(',');
Session["LoginName"] = array[1];
Session["UserNo"] = array[0];
Session["RoleName"] = array[2];
Response.Redirect("AdminDefault.aspx");

}
}
}




自己对照着看看吧 我这个是简化版的三层
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 sxiaohui8709253 的回复:]
引用 16 楼 carlnaeo 的回复:
引用 13 楼 sxiaohui8709253 的回复:
算了 我给你调调吧 你等等
谢谢,成功了我给你10个Q币,说话算话!

Q币我就不要了 ~~ 太多问题啊 不好改啊~
[/Quote]没事,有时间帮我调调,我QQ450154559,先加上回来成功了我再多给你Q币~
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 sxiaohui8709253 的回复:]
C# code

namespace BYJ.SQLServerDAL
{
public class UserDAL:IUserDAL
{
public bool IsRight(String zgxm, string password)

{
……
[/Quote]谢谢,我试试看~
sxiaohui8709253 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 carlnaeo 的回复:]
引用 13 楼 sxiaohui8709253 的回复:
算了 我给你调调吧 你等等
谢谢,成功了我给你10个Q币,说话算话!
[/Quote]
Q币我就不要了 ~~ 太多问题啊 不好改啊~
sxiaohui8709253 2010-04-23
  • 打赏
  • 举报
回复

namespace BYJ.SQLServerDAL
{
public class UserDAL:IUserDAL
{
public bool IsRight(String zgxm, string password)

{
string sql = "select 1 from yhxx where 你数据库里面表示用户名的字段='"+zgxm+"'"; //这里你验证他是不是本站用户 只需要验证数据库存在不存在用户名就好了

DataTable dt=这里调用那个执行语句返回数据表的方法(sql);
if(dt.Rows.Count>0)
return true
else
return false;

}
}


carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lpingz 的回复:]
程序会自动打开一个IE浏览器,加载你的默认界面。
[/Quote]呃呃呃。。我的是用WEB模式编译的。。
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 teng_s2000 的回复:]
引用 4 楼 carlnaeo 的回复:
引用 3 楼 sxiaohui8709253 的回复:
Response.Redirect( "Default.aspx "); 你这句不是可以么?
不行,我一跳转页面就会出错。。

出什么错啊,贴出来
主要相对路径问题,Response.Redirect( "~/Default.aspx ");
[/Quote]是类的方法问题没编译好,如7楼所说,需要修改一下,阁下有什么高招没?~
lpingz 2010-04-23
  • 打赏
  • 举报
回复
程序会自动打开一个IE浏览器,加载你的默认界面。
lpingz 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 carlnaeo 的回复:]

引用 1 楼 lpingz 的回复:
Process.Start("你的uri");
能说的具体点么?
[/Quote]

如果是form程序的话,登录验证通过后,调用Process.Start("你的uri"),其中uri就是你的默认网页的路径(本机和远程的都可以)。
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sxiaohui8709253 的回复:]
算了 我给你调调吧 你等等
[/Quote]谢谢,成功了我给你10个Q币,说话算话!
Teng_s2000 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 carlnaeo 的回复:]
引用 3 楼 sxiaohui8709253 的回复:
Response.Redirect( "Default.aspx "); 你这句不是可以么?
不行,我一跳转页面就会出错。。
[/Quote]
出什么错啊,贴出来
主要相对路径问题,Response.Redirect( "~/Default.aspx ");
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sxiaohui8709253 的回复:]
感觉你这个三层逻辑有点乱吧
是学习Petshop的么?
Entity-IDAL-DAL-BLL 这样就差不多了
做那么复杂把你都绕进去了
[/Quote]我是学c#的,BLL不是业务逻辑层么,IBLL是业务逻辑层的接口,不编译能行么?
sxiaohui8709253 2010-04-23
  • 打赏
  • 举报
回复
算了 我给你调调吧 你等等
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
没事的都来看看,有高手没~!
sxiaohui8709253 2010-04-23
  • 打赏
  • 举报
回复
感觉你这个三层逻辑有点乱吧
是学习Petshop的么?
Entity-IDAL-DAL-BLL 这样就差不多了
做那么复杂把你都绕进去了
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
没人来,自己顶顶!!
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
不要沉啊,希望大家踊跃讨论,集思广益,谁能解决并运行成功了我给谁10个Q币,说话算数!
carlnaeo 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yin11 的回复:]
string sql = "select ' " + zgxm + " ', ' "+password+ " ' from yhxx ";

..........
[/Quote]好眼力,就是这块我编不好,想要和数据库中的数据做个比较,你知道怎么比么~
yin11 2010-04-23
  • 打赏
  • 举报
回复
string sql = "select ' " + zgxm + " ', ' "+password+ " ' from yhxx ";

..........
加载更多回复(7)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧