逻辑层中的代码:
/// <summary>
/// 将包含用户数据的DataRow转换成实体类
/// </summary>
/// <param name="row">包含用户数据的DataRow</param>
/// <returns>包含用户数据的DataRow对应的实体类</returns>
private static UserInfo ChangeToEntity(DataRow row)
{
UserInfo info = new UserInfo();
info.UserId = int.Parse(row["UserId"].ToString());
info.IsAdmin = bool.Parse(row["IsAdmin"].ToString());
info.UserName = row["UserName"].ToString();
info.Passwords = row["Passwords"].ToString();
info.RealName = row["RealName"].ToString();
info.PasswordAnswer = row["PasswordAnswer"].ToString();
info.PasswordQuestion = row["PasswordQuestion"].ToString();
if (row["Birthday"].ToString() != "")
{
info.Birthday = DateTime.Parse(row["Birthday"].ToString());
}
info.UserStatus =(UserStatus)(byte.Parse(row["UserStatus"].ToString()));
info.Email = row["Email"].ToString();
info.RegDate = DateTime.Parse(row["RegDate"].ToString());
info.LoginCount = int.Parse(row["LoginCount"].ToString());
info.LastLoginDate = DateTime.Parse(row["LastLoginDate"].ToString());
return info;
}
/// <summary>
/// 查询用户信息实体
/// </summary>
/// <param name="userName">用户名</param>
/// <returns>返回用户信息实体</returns>
public static UserInfo GetUserEntity(string userName)
{
DataTable data = instance.GetUserInfo(userName);
if (data.Rows.Count > 0)
{
return ChangeToEntity(data.Rows[0]);
}
else
{
return null;
}
}
/// <summary>
/// 用户登录管理后台
/// </summary>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <param name="simpleUserInfo">在会话中保存的用户信息实体</param>
/// <returns>返回是否成功登录</returns>
public static bool AdminLogin(string userName, string password, out SimpleUserInfo simpleUserInfo)
{
UserInfo info = GetUserEntity(userName);
password = MD5Provider.Hash(password);
simpleUserInfo = null;
/*登录管理后台成功必须满足以下条件:
* 1、数据库中存在指定的用户名
* 2、指定用户名的密码和登录密码一致
* 3、用户不是处于被禁止登录状态
* 4、用户具有管理后台权限
*/
if (info == null || info.UserStatus == UserStatus.Forbidden
|| info.Passwords != password||!info.IsAdmin)
{
return false;
}
else
{
simpleUserInfo = new SimpleUserInfo();
simpleUserInfo.UserId = info.UserId;
simpleUserInfo.UserName = info.UserName;
simpleUserInfo.RealName = info.RealName;
simpleUserInfo.IsAdmin = info.IsAdmin;
//当登录成功之后更新用户的最后登录信息
instance.UpdateLoginStatus(info.UserId);
return true;
}
}
数据层的代码:
/// <summary>
/// 用户用户名获取用户信息
/// </summary>
/// <param name="userName">用户名</param>
/// <returns></returns>
public DataTable GetUserInfo(string userName)
{
StringBuilder buffer = new StringBuilder();
buffer.Append("select * from Users ");
buffer.Append(" where UserName=@UserName");
SqlParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.VarChar,20)};
parameters[0].Value = userName;
SqlDbHelper db = new SqlDbHelper();
return db.ExecuteDataTable(buffer.ToString(), CommandType.Text, parameters);
}