ASP.NET Core MVC 筛选器
1、继承Controller【MVC】
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace WebApplication1.App_Start
{
public class ControllerValidateAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
var conLoginName = ConfigurationManager.AppSettings["LoginName"].ToString();
try
{
string loginName = actionContext.HttpContext.Request.Url.AbsolutePath.ToLower().TrimEnd('/').ToString();
if (loginName != conLoginName)
{
var conKey = ConfigurationManager.AppSettings["InfoAPIKey"].ToString();
var token = actionContext.HttpContext.Request.Headers.Get("token").First().ToString();
if (token == conKey)
{
//actionContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { Controller = "", action = "" }));
}
else
{
actionContext.Result = new ContentResult { Content = @"The illegal user access" };
}
}
}
catch (Exception ex)
{
actionContext.HttpContext.Response.Write(ex);
}
}
}
}
2、继承ApiController【API接口】
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace WebApplication1.App_Start
{
public class ApiControllerValidateAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var conLoginName = ConfigurationManager.AppSettings["LoginName"].ToString();
try
{
string loginName = actionContext.Request.RequestUri.AbsolutePath.ToLower().TrimEnd('/').ToString();
if (loginName != conLoginName)
{
var conKey = ConfigurationManager.AppSettings["InfoAPIKey"].ToString();
var token = actionContext.Request.Headers.GetValues("token").First().ToString();
if (token == conKey)
{
//成功
}
else
{
//失败
actionContext.Response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Forbidden);
}
}
}
catch (Exception ex)
{
}
base.OnActionExecuting(actionContext);
}
}
}
3、需要调用的 Controller【MVC】类上加上验证类名
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.App_Start;
namespace WebApplication1.Controllers
{
[ControllerValidate]
public class Test1Controller : Controller
{
//
// GET: /Test1/
public ActionResult Index()
{
return View();
}
}
}
4、需要调用的 ApiController【API接口】类上加上验证类名
using WebApplication1.App_Start;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MvcApplication1.Controllers
{
[ApiControllerValidate]
public class TestController : ApiController
{
[HttpGet]
public dynamic Index()
{
return Request.CreateResponse(HttpStatusCode.OK, new
{
Success = true,
Message = ""
});
}
}
}
5、WebAPI项目,启用全局过滤器限制【WebAPI】
1、添加自定义过滤器
2、在【App_Start】文件夹【FilterConfig.cs】文件中的【RegisterGlobalFilters】方法注册全局过滤器,这样每个请求都会执行过滤器;
using System.Web.Mvc;
namespace WebAPI
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new DueDateAttribute());
}
}
}
6、Web项目,启用全局过滤器限制【Web】
1、添加自定义过滤器
2、在【App_Start】文件夹【FilterConfig.cs】文件中的【RegisterGlobalFilters】方法注册全局过滤器,这样每个请求都会执行过滤器;
using Web.App_Start;
using Web.Filter;
using System.Web.Mvc;
namespace Web
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
//filters.Add(new UserInfoAttribute());
filters.Add(new ExceptionFilter());
filters.Add(new ResultActionFilter());
filters.Add(new JsonFormatConfig());
}
}
}
*
*
*