asp.net mvc 根据浏览器判断,如果是微信浏览器则进行网页授权,否则直接访问
遇到这个需求,想到的第一点就是,这个肯定是需要写在一个通用的地方。方便调用。一般可以定义个 父类控制器在OnActionExcuting方法执行前写逻辑,先上代码,一边写代码一边讲解:
/// <summary> /// 执行方法前 /// </summary> /// <param name="filterContext"></param> protected override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.IsChildAction) return; //需要排除校验的控制器名称 string[] excludeControllerName = { "error", "ThirdPartyNotify" }; bool hasElenemt = MyCommFun.StringHasElenemt(filterContext.Controller.ToString().ToLower(), excludeControllerName); if (hasElenemt) { //排除error控制器 return; } string userAgent = Request.UserAgent; //如果为微信端登录,则需要网页授权,排除error控制器 if (userAgent.ToLower().IndexOf("micromessenger") > -1) { if (WebHelper.IsAjax())//判断是否为ajax请求的情况 { ProcessInvalidUser_Ajax(filterContext); return; } else {
//网页授权 bool obpOk= OAuth2BaseProc(filterContext, wid); if (!obpOk) { return; } } } base.OnActionExecuting(filterContext); }
作者:沐雪
文章均系作者原创或翻译,如有错误不妥之处,欢迎各位批评指正。本文版权归作者和博客园共有,如需转载恳请注明。
如果您觉得阅读这篇博客让你有所收获,请点击右下方【推荐】
为之网-热爱软件编程 http://www.weizhi.cc/