mvc中利用Attribute特性来进行进行简单的登陆验证

前段时间一直比较忙。好不容易忙完。闲的没事干,就捣腾了下mvc(ef),因为以前都是用三层框架来进行开发,mvc用的也不是很多。。。众所周知,在三层里面我们一般都是建一个基类,然后在基类里面写验证登录方法,然后在需要验证登录的页面继承这个基类即可。。。但到了mvc里面所有的视图页面的操作都转移到了控制器了。。这个时候我们在按照三层的方式建一个基类来继承验证登录,就没办法走通了。。。今天我就给大家来展示一个利用Attribute特性来验证登录。如果还有不知道这个东东的,可以百度一下Attribute。

首先我们建一个BaseAdminPage.cs的基类

 1 public class BaseAdminPage : AuthorizeAttribute
 2     {
 3         public Admin_SysUser base_SysUser = new Admin_SysUser();
 4 
 5         public override void OnAuthorization(AuthorizationContext filterContext)
 6         {
 7             #region 检查是否登录
 8 
 9             Admin_SysUser su = new Admin_SysUser();
10             if (CookieManage.CheckSysUserIsLoginValid(out su))
11             {
12                 su.LastLoginDate = DateTime.Now;
13                 UserManage<Admin_SysUser>.UpdateAdminSysUser(su);
14 
15                 this.base_SysUser = su;
16             }
17             else
18             {
19                 this.LoginOut();
20             }
21 
22             #endregion
23         }
24         /// <summary>
25         /// 退出运营支持系统
26         /// </summary>
27         protected void LoginOut()
28         {
29             CookieManage.ClearSysUserLoginCookie();
30             HttpContext.Current.Response.Write("<script type="text/javascript">window.parent.location.href="/AdminManage/Login";</script>");
31         }
32     }

基类继承AuthorizeAttribute这个特性

然后我们在通过重写

特性中OnAuthorization这个方法来实现验证登录
到了这一步我们完成基类登录验证。。那么我们如何来调用它呢。。
接下来我们添加一个名为SysUserController的控制器
如果我们只要单个操作进行登录验证时,那么我们只需要如下代码所示
public class SysUserController : Controller
    {
        //
        // GET: /SysUser/
        [Controls.BaseAdminPage]//
        public ActionResult Index()
        {
            return View();
        }

    }

  如果整个控制器需要验证登录,那么我们只需要把代码稍作修改,如下

 1 [Controls.BaseAdminPage]
 2     public class SysUserController : Controller
 3     {
 4         //
 5         // GET: /SysUser/
 6         public ActionResult Index()
 7         {
 8             return View();
 9         }
10 
11     }

至此在mvc中我们就完成了登录验证了。。。。

方法写的比较简单。在此望各位见谅。。。

原文地址:https://www.cnblogs.com/dzycwy/p/4038685.html