MVC4制作网站教程第二章 用户登陆2.2

2019-05-22 10:10:52于丽

完成后代的Login.cshtml 

@model CMS.Models.UserLogin

@{
 ViewBag.Title = "用户登陆";
 Layout = "~/Views/Shared/_Layout.cshtml";
}
 
<div class="banner"> 
 <img src="~/Skins/Default/Images/banner.jpg" /> 
</div>
 

@using (Html.BeginForm()) 
{ 
 @Html.ValidationSummary(true)

 <div class="form"> 
 <dl> 
  <dt>用户登陆</dt> 
  <dd> 
  <div class="label">@Html.LabelFor(model => model.UserName):</div> 
  <div class="ctrl">@Html.EditorFor(model => model.UserName) 
   @Html.ValidationMessageFor(model => model.UserName) 
   @Html.DisplayDescriptionFor(model => model.UserName) 
  </div> 
  </dd> 
  <dd> 
  <div class="label">@Html.LabelFor(model => model.Password):</div> 
  <div class="ctrl">@Html.PasswordFor(model => model.Password) 
   @Html.ValidationMessageFor(model => model.Password) 
   @Html.DisplayDescriptionFor(model => model.Password) 
  </div> 
  </dd> 
  <dd> 
  <div class="label">验证码:</div> 
  <div class="ctrl">
   @Html.TextBoxFor(model => model.VerificationCode) 
   @Html.ValidationMessageFor(model => model.VerificationCode) 
   <img id="verificationcode" alt="" src="@Url.Action("VerificationCode", "User")" /> 
   <a id="trydifferent" style="cursor: pointer">换一张</a> 
  </div> 
  </dd> 
  <dd> 
  <div class="label"></div> 
  <div class="ctrl"> 
   <input type="submit" value="登陆" />@Html.ValidationMessage("Message"); 
  </div> 
  </dd> 
 </dl> 
 <div class="clear"></div> 
 </div>
}

<script type="text/javascript">
 $("#trydifferent").click(function () { 
 $("#verificationcode").attr("src", "/User/VerificationCode?" + new Date()); 
 })

</script>
@section Scripts { 
 @Scripts.Render("~/bundles/jqueryval") 
}

浏览器中查看一下登陆页面

点下登陆测试一下。OK登陆成功 

验证用户是否已经登陆,这块和权限验证一起从AuthorizeAttribute继承个自定义验证类 

在项目里添加Extensions文件夹,添加一个类UserAuthorizeAttribute 继承自AuthorizeAttribute,重写AuthorizeCore方法用来实现用户是否已经登陆的验证,权限验证在写权限功能时在补充 

using Ninesky.Repository;

namespace System.Web.Mvc
{
 /// <summary>
 /// 用户权限验证
 /// </summary>
 public class UserAuthorizeAttribute :AuthorizeAttribute
 {
 /// <summary>
 /// 核心【验证用户是否登陆】
 /// </summary>
 /// <param name="httpContext"></param>
 /// <returns></returns>
 protected override bool AuthorizeCore(HttpContextBase httpContext)
 {
  //检查Cookies["User"]是否存在
  if (httpContext.Request.Cookies["User"] == null) return false;
  //验证用户名密码是否正确
  HttpCookie _cookie = httpContext.Request.Cookies["User"];
  string _userName = _cookie["UserName"];
  string _password = _cookie["Password"];
  httpContext.Response.Write("用户名:"+_userName);
  if (_userName == "" || _password == "") return false;
  UserRepository _userRsy = new UserRepository();
  if (_userRsy.Authentication(_userName, _password) == 0) return true;
  else return false;
 }
 }
}