第一步,在SqlServer数据库中创建存储过程,查询的是用户名(员工姓名)所扮演的角色:
if exists(select * from sys.objects where name=‘proc_select_Login‘) begin drop procedure proc_select_Login end go create procedure proc_select_Login @ename nvarchar(20), --用户名 @epwd nvarchar(20) --密码 as select j.JName from EmployInfo,JobInfo j where [email protected] and EPwd=@epwd go
第二步,在Model中业务逻辑EmployeeDao类下创建SelectLogin方法,使用ExecuteScalar()方法查询出用户名(员工姓名)的角色,返回的是字符串类型:
/// <summary> /// 管理员登录 /// </summary> /// <param name="ename"></param> /// <param name="epwd"></param> /// <returns></returns> public string SelectLogin(string ename, string epwd) { string sql = "proc_select_Login"; SqlCommand cmd = new SqlCommand(sql, con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@ename", ename); cmd.Parameters.AddWithValue("@epwd", epwd); con.Open(); string jName = string.Empty; jName = Convert.ToString(cmd.ExecuteScalar()); con.Close(); return jName; }
第三步,在Controller控制器中创建名称为EmployeeController的.cs文件,调用EmployeeDao类下SelectLogin()方法,进行员工登录验证。登录成功,进行页面跳转,并把用户名(员工姓名)和其角色存储到Session中,
注意:string txtCheck 是接受页面中写入的验证码,且与页面中验证码input标签中的name必须一致。
/// <summary> /// 员工登录验证 /// </summary> /// <param name="collection"></param> /// <param name="txtCheck">验证码</param> /// <returns></returns> [HttpPost] public ActionResult Login(FormCollection collection,string txtCheck) { //接收页面输入的用户名和密码 employ.EName = collection["txtname"]; employ.EPwd = collection["txtpwd"]; string str = Convert.ToString(this.TempData["Code"]).ToLower();//接收存在临时数据中的验证码 string jName = dao.SelectLogin(employ.EName, employ.EPwd); if (jName!=string.Empty) { if (str != txtCheck.ToLower()) { ViewBag.ErrorMsg = "验证码错误"; return View(employ); } else { //使用Session进行储存 this.Session["eName"] = employ.EName; //使用session进行储存 this.Session["jName"] = jName; //this.Session.Add("employ", employ); return RedirectToAction("Index", "Home"); } } else { ViewBag.ErrorMsg = "用户名或密码错误"; return View(employ); } } }
第四步,创建登录页面,我这里嵌入的是html代码:
<body> <form action="/Employee/Login" method="post"> <table border="0" align="center" cellpadding="10" cellspacing="5" style=" margin-top:150px;"> <tr> <td width="31%" height="35" class="login-text02"> 用户名:<br /> </td> <td width="69%"> <input type="text" name="txtname" id="txtname" @*value="@Model.EName" *@/> </td> </tr> <tr> <td height="35" class="login-text02"> 密 码:<br /> </td> <td> <input type="password" name="txtpwd" id="txtpwd" @*value="@Model.EPwd"*@ /> </td> </tr> <tr> <td height="35" class="login-text02"> 验证码:<br /> </td> <td> <div style="width:400px;"> <input type="text" name="txtCheck" /> <img id="valiCode" style="cursor: pointer;" src="/ValidateCodeImg/Get" title="看不清,点击换一张" alt="看不清?请点我" onclick="imgCodes(this);" /> <a href="javascript:imgCodes();">看不清楚,点击这里</a> </div> </td> </tr> <tr> <td height="35"> </td> <td> <input type="submit" id="btnlogin" value="登录" class="btn btn-success"/> <input type="reset" value="重 置" class="btn btn-warning"/> <label style="color:Red;">@ViewBag.ErrorMsg</label> </td> </tr> </table> </form> </body>
第五步,在Controller中创建控制器命名为HomeController,接受之前Session中存储的用户和其角色:
public ActionResult Top(FormCollection collecton) { string eName = Convert.ToString(this.Session["eName"]);//接收存在session中的验证码 string jName = this.Session["jName"].ToString(); return View(); }
第六步,为HomeController创建页面,绑定Session中存储的存储的用户名和其角色:
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <img src="@Url.Content("~/Content/images/uesr.gif")" width="14" height="14"> <span class="STYLE2"> 当前登录用户:@if (Session["eName"] != null) { <span>@Session["eName"].ToString()</span> } 角色:@if (Session["jName"]!=null) { <span>@Session["jName"].ToString()</span> } </span> </td> </tr> </table>
显示结果:
时间: 2024-10-18 12:03:20