1 public string ErrorMsg { get; set; }
2 protected void Page_Load(object sender, EventArgs e)
3 {
4 if (IsPostBack)
5 {
6 //判断用户名与密码之前先判断验证码是否正确。
7 if (CheckValidateCode())
8 {
9 CheckUserInfo();//对用户名密码进行校验
10 }
11 else
12 {
13 ErrorMsg = "验证码错误!!";
14 }
15 }
16 else
17 {
18 //判断Cookie中是否有值。如果有值,并且值是正确的,那么跳转,不需要用户在输入用户名和密码了。如果Cookie没有值,或者值是错误的,那么继续呈现登录表单,让用户输入用户名密码进行登录。
19 CheckCookieInfo();
20
21 }
22 }
23
24 /// <summary>
25 /// 对Cookie的信息进行校验
26 /// </summary>
27 private void CheckCookieInfo()
28 {
29 if (Request.Cookies["cp1"] != null && Request.Cookies["cp2"] != null)
30 {
31 string userName = Request.Cookies["cp1"].Value;
32 string userPwd = Request.Cookies["cp2"].Value;
33 BLL.UserInfoService UserInfoService = new BLL.UserInfoService();
34 UserInfo userInfo=UserInfoService.GetUserInfoModel(userName);
35 if (userInfo != null)//根据Cookie中存储的用户名找用户,如果不为空,表示Cookie中存储的用户名是否正确的。
36 {
37 //判断该用户数据库中存储的密码是否与Cookie中存储的密码是否一致。注意:在注册时,一定要将用户输入的密码加密以后在存储到数据库中。假如,用户注册时的密码已经两次MD5运算了,那么这里直接比较就OK了。
38 if (userPwd == Common.WebCommon.GetMd5String(Common.WebCommon.GetMd5String(userInfo.UserPass)))
39 {
40 Session["userInfo"] = userInfo;
41 Response.Redirect("UserList.aspx");
42 }
43
44 }
45 //如果Cookie中是有值的,但是Cookie存储的用户名或密码不正确,表示用户名和密码被篡改了,那么只能继续出现登录页面。那么该 cOOKIE也没有必要存在了。
46 Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(-1);
47 Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);
48 }
49 }
50
51 /// <summary>
52 /// 校验用户的用户名和密码是否正确
53 /// </summary>
54 private void CheckUserInfo()
55 {
56 string userName = Request.Form["txtClientID"];
57 string userPwd = Request.Form["txtPassword"];
58 BLL.UserInfoService UserInfoService = new BLL.UserInfoService();
59 string msg = string.Empty;
60 UserInfo userInfo=null;
61 if (UserInfoService.CheckLoginUserInfo(userName, userPwd, out msg, out userInfo))
62 {
63 //判断用户是否选择了"自动登录"
64 if (!string.IsNullOrEmpty(Request.Form["autoLogin"]))//如果表单中有多个CheckBox,只会将选中的value提交到服务端
65 {
66 HttpCookie cookie1 = new HttpCookie("cp1",userName);
67 HttpCookie cookie2 = new HttpCookie("cp2", Common.WebCommon.GetMd5String(Common.WebCommon.GetMd5String(userPwd)));
68 cookie1.Expires = DateTime.Now.AddDays(3);
69 cookie2.Expires = DateTime.Now.AddDays(3);
70 Response.Cookies.Add(cookie1);
71 Response.Cookies.Add(cookie2);
72 }
73
74 //如果上面的条件成立,表示用户输入的是正确的用户名和密码.
75 Session["userInfo"] = userInfo;
76
77 Response.Redirect("UserList.aspx");
78 }
79 else
80 {
81 ErrorMsg = msg;
82 }
83 }
84
85 #region 验证码进行校验
86 private bool CheckValidateCode()
87 {
88 //注意:使用Session时先判断值是否为空.
89 bool isSucess = false;
90 if (Session["code"] != null)
91 {
92 string txtCode = Request.Form["txtCode"];
93 string sysCode = Session["code"].ToString();
94 if (sysCode.Equals(txtCode, StringComparison.InvariantCultureIgnoreCase))
95 {
96 Session["code"] = null;
97 isSucess = true;
98 }
99 }
100 return isSucess;
101 }
102
103 #endregion
104 }
1 context.Response.ContentType = "text/plain";
2 Common.ValidateCode validateCode = new Common.ValidateCode();
3 string code=validateCode.CreateValidateCode(4);
4 context.Session["code"] = code;//注意:在一般处理程序中使用Session必须要实现System.Web.SessionState.IRequiresSessionState接口.
5 validateCode.CreateValidateGraphic(code, context);