1.特性
/// <summary>
/// 运行环境:Development,Staging,Production
/// </summary>
public class EnableHostEnvionmentAttribute : ActionFilterAttribute
{
private string hostEnvNames;
/// <summary>
///
/// </summary>
/// <param name="hostEnvNames"></param>
public EnableHostEnvionmentAttribute(string hostEnvNames)
{
this.hostEnvNames = hostEnvNames;
}
/// <summary>
/// Action开始之前执行
/// </summary>
/// <param name="actionContext"></param>
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
//应用启程运行环境
var currentHostEnv = (IHostEnvironment)actionContext.HttpContext.RequestServices.GetService(typeof(IHostEnvironment));
string[] hostEnvArray = hostEnvNames.Split(',');
foreach (var item in hostEnvArray)
{
if (currentHostEnv.EnvironmentName != item)
{
actionContext.Result = new JsonResult(FuncResult.Fail($"不允许的运行环境(当前:{currentHostEnv.EnvironmentName})"));
break;
}
}
base.OnActionExecuting(actionContext);
}
}
2.调用
/// <summary>
/// 测试
/// </summary>
public class TestController : BaseController
{
/// <summary>
/// 测试
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
[HttpGet("Sensitive")]
[EnableDebug]
[EnableHostEnvionment("Staging")] //Development,Staging,Production
public FuncResult<Test> GetSensitiveData(string data)
{
return new Test() { SensitiveData = data };
}
}
/// <summary>
/// 测试
/// </summary>
public class Test
{
/// <summary>
/// 脱敏数据
/// </summary>
[SensitiveData]
public string SensitiveData { get; set; }
}
3.测试
{
"code": "0500",
"message": "不允许的运行环境(当前:Development)"
}