打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[asp.net mvc]自定义filter

写在前面

最近在摸索mvc,在app中的webview中嵌入h5应用,经常需要用到对cookie的读取操作。所以想到通过自定义的filter截取cookie,然后通过在action上面打特性的方式针对需要认证的action进行授权。

一个例子

简单的userInfo类

    public class UserInfo    {        public string Name { set; get; }        public string Pwd { set; get; }    }

自定义的filter

    public class CookieAuthAttribute : ActionFilterAttribute    {        public override void OnActionExecuting(ActionExecutingContext filterContext)        {            //当前action的参数名称            const string actionParameter = "cookieUser";            HttpContext context = HttpContext.Current;            if (filterContext.ActionParameters.ContainsKey(actionParameter))            {                HttpCookie nameCookie = context.Request.Cookies["n"];                HttpCookie pwdCookie = context.Request.Cookies["p"];                filterContext.ActionParameters[actionParameter] = null;                if (nameCookie != null && pwdCookie != null)                {                    filterContext.ActionParameters[actionParameter] = new UserInfo() { Name = nameCookie.Value, Pwd = pwdCookie.Value };                }            }            base.OnActionExecuting(filterContext);        }    }

注册filter

    public class FilterConfig    {        public static void RegisterGlobalFilters(GlobalFilterCollection filters)        {            filters.Add(new HandleErrorAttribute());            filters.Add(new CookieAuthAttribute());        }    }
    public class MvcApplication : System.Web.HttpApplication    {        protected void Application_Start()        {            AreaRegistration.RegisterAllAreas();            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);        }    }

在需要授权的action上面打特性标记

  public class HomeController : Controller    {        // GET: Home        [CookieAuth]        public ActionResult Index(UserInfo cookieUser)        {            if (cookieUser == null)            {                return new EmptyResult();            }            else            {                return View(cookieUser);            }        }        public void Login()        {            HttpCookie nameCookie = new HttpCookie("n", "wolfy");            HttpCookie pwdCookie = new HttpCookie("p", "12321312");            Response.Cookies.Add(nameCookie);            Response.Cookies.Add(pwdCookie);        }    }

通过Login写入cookie,然后访问Index

结果

这样通过cookie来对要访问的action授权就简单多了,只需在需要认证的action上面打上特性 [CookieAuth]就可以了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
转:ASP.NET MVC4细嚼慢咽---(6)全局过滤器
ASP.NET MVC中错误日志信息记录
MVC 自定义AuthorizeAttribute实现权限管理
玩转Asp.net MVC 的八个扩展点(上)
ASP.NET MVC自定义异常捕捉及处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服