给web api 项目和mvc 项目添加过滤器的时候遇到了一个问题,在web api 引用的是Http 而在MVC 项目引用的是 System.Web.Mvc
web api 代码:
using System.Net;
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using com.ruxi.Biz.User;
namespace com.ruxi.WebPortal.Controllers.App.Extentions
{
public class ApiNeedBindPhoneAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext filterContext)
{
var bc = filterContext.ControllerContext.Controller as BaseApiController;
if (bc != null)
{
if (bc.IsLogin)
{
var usi = UserService.Instance.GetUserSysInfo(bc.AccessTokenData.UserId);
if (usi == null)
{
filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.Forbidden, (object)"当前用户不存在");
}
else
{
if (usi.user_pn == 0 && usi.user_mseed == 0)
{
filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, (object)SysUserStatus.未激活);
}
}
}
}
base.OnActionExecuting(filterContext);
}
}
}
Mvc 代码如下:
using System.Web.Mvc;
using com.ruxi.Biz.User;
namespace com.ruxi.WebPortal.Extensions
{
public class NeedBindPhoneAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var bc = (filterContext.Controller as BaseController);
if (bc != null)
{
var usi = UserService.Instance.GetUserSysInfo(bc.SessionUserId);
if (usi?.user_pn == 0 && usi.user_mseed == 0)
{
filterContext.Result = new RedirectResult("/filmperson/bindphone");
}
}
base.OnActionExecuting(filterContext);
}
}
}