码迷,mamicode.com
首页 > 其他好文 > 详细

简单自定义授权过滤器

时间:2019-09-03 22:15:30      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:res   rect   event   str   isp   exp   text   author   sid   

过滤器的根本也是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     }
授权过滤器

简单自定义授权过滤器

标签:res   rect   event   str   isp   exp   text   author   sid   

原文地址:https://www.cnblogs.com/qiao298/p/11455738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!