• 简单自定义授权过滤器


    过滤器的根本也是Attribute,大家可以F12从从元数据中可以看到,最后还是继承了一下Attribute,跟特性还是脱不了干系.

    授权过滤器要继承System.Web.Mvc命名空间下AuthorizeAttribute类,指定用户访问就是利用了Users属性,并由基类帮我们验证,只放指定Users用户通过;要实现自定义验证,重写下面的OnAuthorization和AuthorizeCore方法就可以了

    下面是一个简单的授权,用户登录完之后才可以查看购物车(Cookie 中数据最好要加密,不要问我为什么,因为会泄露)

    废话不多说,直接上代码简单粗暴

    刚刚接触,各方面了解不是很多,有什么错误希望各位大佬可以提出来

     1 //页面
     2         public ActionResult Login()
     3         {
     4             return View();
     5         }
     6         /// <summary>
     7         /// 登录
     8         /// </summary>
     9         /// <param name="name">用户名</param>
    10         /// <param name="pwd">密码</param>
    11         /// <param name="yzm">验证码</param>
    12         /// <returns>登录完之后把指定的数据存到Cookie,以便使用</returns>
    13         public int UserLogin(string name, string pwd,string yzm)
    14         {
    15             //判断验证码是否正确
    16             if(Session["ValidateCode"].ToString().ToLower()!=yzm.ToString().ToLower())
    17             {
    18                 return -2;
    19             }
    20             #region Cookie
    21             //实例化Cookie
    22             HttpCookie cookie = new HttpCookie("User");
    23             //设置一个单独的Cookie值
    24             cookie.Value = name;
    25             //获取当前时间
    26             DateTime dtNow = DateTime.Now;
    27             //设置多久之后Cookie失效
    28             TimeSpan tsMinute = new TimeSpan(0, 0, 5, 0);
    29             //拼接起来
    30             cookie.Expires = dtNow + tsMinute;
    31             //给指定的Cookie添加数据
    32             cookie["name"] = name;
    33             //添加保存到浏览器的Cookie
    34             Response.Cookies.Add(cookie);
    35 
    36             #endregion
    37             //md5加密
    38             pwd = BLL.Md5Helper.Md5(pwd);
    39             int Usid = 0;
    40             var i = BLL.UserBLL.Login(name,pwd,out Usid);
    41             return i;
    42         }
    控制器登录
     1 /// <summary>
     2     /// 购物车授权
     3     /// 从Cookie中把数据拿出来,判断是否正确,然后授权
     4     /// 然后可以根据这个数据进行一系列操作,比如登录头像,购物车什么的
     5     /// </summary>
     6     public class CartAttribute: AuthorizeAttribute
     7     {
     8         //认证并授权
     9         protected override bool AuthorizeCore(HttpContextBase httpContext)
    10         {
    11             //获取Cookie里的值
    12             string name = "";
    13             //创建一个httpcookie类型的   获取cookies的集合
    14             System.Web.HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["User"];
    15             if (cookie != null)
    16             {
    17                 name = cookie["name"].ToString();
    18                 return true;
    19             }
    20             return false;
    21         }
    22         //授权失败后要执行的
    23         protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    24         {
    25             filterContext.HttpContext.Response.Redirect("/Commodity/NotLog");
    26             //base.HandleUnauthorizedRequest(filterContext);
    27         }
    28     }
    授权过滤器
  • 相关阅读:
    smdkv210
    wireshark常用过滤规则
    go json序列化不填充默认值
    refactoring.guru-重构-如何重构
    refactoring.guru--重构--何时重构
    refactoring.guru--重构--技术债务
    refactoring.guru学习记录--重构--整洁的代码
    window7下python3 编译pjsua
    go 单元测试框架介绍
    算法图解学习笔记之算法
  • 原文地址:https://www.cnblogs.com/qiao298/p/11455738.html
Copyright © 2020-2023  润新知