简单自定义授权过滤器

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

授权过滤器

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

时间: 2024-08-30 09:34:47

简单自定义授权过滤器的相关文章

MVC过滤器:自定义授权过滤器

一.授权过滤器 授权过滤器用于实现IAuthorizationFilter接口和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全策略.AuthorizeAttribute类继承了IAuthorizationFilter接口,是授权过滤器的示例.授权过滤器在任何其他过滤器之前运行. 如果要自定义授权过滤器,只需要定义一个类继承自AuthorizeAttribute类,然后重写AuthorizeAttribute类里面的方法即可. 二.示例 下面根据一个具体的案例来讲解如何使用自定义

自定义jinja2 过滤器

今天,我们要讲的是自定义jinja2 过滤器这个知识点,因为官方文档对此一代而过,讲得不够清楚,所以我们专门拿出来讲一下. 例子 例子写了两个自定义过滤器,一个是转换字典到字符串的过滤器,一个是返回当前参数的类型的过滤器. 源代码: https://github.com/lewis617/jinja2-filter filter是个函数 filter是个函数,跟angular的过滤器几乎一模一样.参数就是管道(pipe)前面那个变量.比如   123|myfilter,123就是myFilter

【.NET Core项目实战-统一认证平台】第十四章 授权篇-自定义授权方式

[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何强制令牌过期的实现,相信大家对IdentityServer4的验证流程有了更深的了解,本篇我将介绍如何使用自定义的授权方式集成老的业务系统验证,然后根据不同的客户端使用不同的认证方式来集成到统一认证平台. .netcore项目实战交流群(637326624),有兴趣的朋友可以在群里交流讨论. 一.自定授权源码剖析 当我们需要使用开源项目的某些功能时,最好了解实现的原理,才能正确和熟练使用功能,避免出现各种未知bug问

django 第五课自定义模板过滤器与标签

代码布局:(自定义的代码放在哪里) 某个app特有的 app目录下,templatetags文件夹需要放 __init__.py 在到templetags文件夹下创建python模块(py文件) 定义复用 创建要给新的app,将他们定义在新的app中,在INSTALL_APPS 注册,然后可以应用 自定义模板过滤器 模板过滤器是什么? 函数,一个或两个参数 第一个参数是传递进来的模板变量 第二个参数,普通的参数,也可以是默认也可以不要其实就是个函数,没有什么不同在app目录teacher下创建t

MVC过滤器:自定义操作过滤器

一.操作过滤器 1.定义 操作过滤器用于实现IActionFilter接口以及包装操作方法执行.IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted.OnActionExecuting在操作方法之前运行.OnActionExecuted在操作方法之后运行,可以执行其他处理,如向操作方法提供额外数据.检查返回值或取消执行操作方法. 查看ActionFilterAttribute类的定义: #region 程序集 System.Web.Mv

ASP.NET Core中使用自定义MVC过滤器属性的依赖注入

原文:ASP.NET Core中使用自定义MVC过滤器属性的依赖注入 除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的MVC过滤器之一是  ExceptionFilterAttribute,用于处理Wep API应用程序中的错误响应.它很容易实现,开发人员和我在ASP.NET Core中使用MVC过滤器属性所面临的问题是访问Startup.cs类

java学习笔记(2):获取文件名和自定义文件过滤器

//自定义文件过滤器import java.io.File; import javax.swing.filechooser.*; public class JavaChooser extends FileFilter{ @Override public String getDescription() { return ".java"; } @Override public boolean accept(File f) { // TODO Auto-generated method st

MVC 授权过滤器 AuthorizeAttribute

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc; namespace 过滤器.Filtes{ /// <summary> /// 授权过滤器,在Action过滤器之前执行/// </summary> public class MyAuthorizeAttribute : AuthorizeAttribute { /// <

c# 自定义log4net过滤器

有时候为了实现自己想要的多个日志文件记录不同的内容,可能需要自定义log4net过滤器,比如我这里需要记录三个文件,这三个文件的内容又不能重复,多次尝试未果. 为了不更改任何现有日志代码的情况下,于是自定了过滤器. <log4net> <root name="Default"> <level value="All" /> <appender-ref ref="FileAppender"/> <