简单自定义授权过滤器
Posted qiao298
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单自定义授权过滤器相关的知识,希望对你有一定的参考价值。
过滤器的根本也是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
以上是关于简单自定义授权过滤器的主要内容,如果未能解决你的问题,请参考以下文章
自定义授权过滤器在 ASP.NET Core 3 中不起作用