MVC 记录操作日志与过滤特殊字符
最近进行的MVC系统需要用到记录操作日志和过滤特殊字符的功能,如果每个action中都调用记录日志的方法就太麻烦了,所以根据需要结合mvc的过滤机制
写了个特殊字符验证与记录操作日志的公用类:
public class CustomFilterAttribute : ActionFilterAttribute
{
public CustomFilterAttribute()
{
IsLog = false;
FilterSpecialChar = true;
} /// <summary>
/// 是否记录日志
/// </summary>
public bool IsLog { get; set; } /// <summary>
/// 是否过滤特殊字符
/// </summary>
public bool FilterSpecialChar { get; set; } /// <summary>
/// 登录用户
/// </summary>
public string UserName { get; set; } /// <summary>
/// 操作简介
/// </summary>
public string Message { get; set; } /// <summary>
/// action执行前特殊字符过滤
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext); if (filterContext.ActionParameters.Count > )
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
if (IsContainSpecialChar(filterContext.ActionParameters))
{
var json = new JsonResult();
json.Data = new { status = false, msg = "您输入的数据中包含特殊字符。" };
json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
filterContext.Result = json;
}
}
else if (IsContainSpecialChar(filterContext.ActionParameters))
{
var ReturnUrl = "/Login/Index";
filterContext.Result = new RedirectResult(ReturnUrl);
}
} return;
} /// <summary>
/// action执行后记录日志
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
if (this.IsLog)
{
var ActionName = filterContext.ActionDescriptor.ActionName;
var Url = "/" + filterContext.ActionDescriptor.ControllerDescriptor.ControllerName + "/" + ActionName; //var loginInfo = (ViewModel.t_User_VModel)filterContext.HttpContext.Session["userMdl"];
string OperateIP = HttpContext.Current.Request.UserHostAddress; //登录用户
//if (loginInfo != null)
//{
// this.UserName = loginInfo.UserName;
//}
this.UserName = "测试";
Message = filterContext.Exception == null ? "成功" : "失败" + Message; new JiaSoftOTOSystem.BLL.OperateLog_BLL().AddOprateLog(UserName, OperateIP, Url, ActionName, Message);
}
} //public override void OnResultExecuting(ResultExecutingContext filterContext)
//{
// base.OnResultExecuting(filterContext);
// //filterContext.HttpContext.Response.Write("返回Result之前" + Message + "<br />");
//} //public override void OnResultExecuted(ResultExecutedContext filterContext)
//{
// base.OnResultExecuted(filterContext);
// //filterContext.HttpContext.Response.Write("返回Result之后" + Message + "<br />");
//} /// <summary>
/// 验证string类型参数中是否含有特殊字符
/// </summary>
/// <param name="paramters"></param>
/// <returns>有:true,没有:false</returns>
public bool IsContainSpecialChar(IDictionary<string, object> paramters)
{
bool bResult = false;
System.Text.StringBuilder strParam = new System.Text.StringBuilder();
foreach (var item in paramters)
{
if (item.Value != null)
{
Type types = item.Value.GetType();
if (types.Name.EndsWith("Model"))
{
System.Reflection.PropertyInfo[] ps = types.GetProperties();
foreach (PropertyInfo pi in ps)
{
object value = pi.GetValue(item.Value, null);//用pi.GetValue获得值
string name = pi.Name;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作
//获得属性的类型,进行判断然后进行以后的操作,例如判断获得的属性是整数
if (value != null && value.ToString().Length > )
{
if (value.GetType() == typeof(string))
{
if (FilterSpecialChar && !bResult && Regex.IsMatch(value.ToString(), @"[~<>$%\^\+\&\\\/\?\|:\{}()';=]"))
{
bResult = true;
strParam.Append(name + "=" + value.ToString().Replace("'", "‘").Replace("\"", "").Replace("&", "&").Replace("<", "<").Replace(">", ">") + "|");
}
else if (IsLog)
{
strParam.Append(name + "=" + value + "|");
}
}
else if (IsLog && item.Value.GetType() == typeof(Guid) && item.Value.ToString() != Guid.Empty.ToString())
{
strParam.Append(name + "=" + value + "|");
}
else if (IsLog && (item.Value.GetType() == typeof(int) || item.Value.GetType() == typeof(decimal)) && item.Value.ToString() != "")
{
strParam.Append(name + "=" + value + "|");
}
else if (IsLog)
{
strParam.Append(name + "=" + value + "|");
}
}
}
}
else if (item.Value != null && item.Value.ToString().Length > )
{
if (item.Value.GetType() == typeof(string))
{
if (FilterSpecialChar && !bResult && Regex.IsMatch(item.Value.ToString(), @"[~<>$%\^\+\&\\\/\?\|:\{}()';=]"))
{
bResult = true;
strParam.Append(item.Key + "=" + item.Value.ToString().Replace("'", "‘").Replace("\"", "").Replace("&", "&").Replace("<", "<").Replace(">", ">") + "|");
}
else if (IsLog)
{
strParam.Append(item.Key + "=" + item.Value + "|");
}
}
else if (IsLog && item.Value.GetType() == typeof(Guid) && item.Value.ToString() != Guid.Empty.ToString())
{
strParam.Append(item.Key + "=" + item.Value + "|");
}
else if (IsLog && (item.Value.GetType() == typeof(int) || item.Value.GetType() == typeof(decimal)) && item.Value.ToString() != "")
{
strParam.Append(item.Key + "=" + item.Value + "|");
}
else if (IsLog)
{
strParam.Append(item.Key + "=" + item.Value + "|");
}
}
}
} this.Message = "。参数:" + strParam.ToString(); return false;
} }
调用方式如下:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAowAAACzCAIAAACM4trQAAAfTElEQVR4nO2dz4smx3nH54+wjj76JF8NYyyDiRaBdclubPBJGx8MxlpB8GmECXjQ7pJALlICEQJJFx/EmgSRMEt83HWOWemQgNnVwQGFXYMCSWaTYDLvzNs5vKvemnp+1Leqq7ur+/1+aIZ+q5966qme7v72U/3roCOEEEJIkxzMHQAhhBBCdCjShBBCSKNQpAkhhJBGoUgTQgghjTKPSB8fHw8pJAPZHB5WrKIu8puIlubGg9v3lgVdJoSQ2ZlBpEdS6JblfK7YNoeH4RQt8u3lIr+hAvukguaW+5bUaULI4liJSLes0DtmidCRKD/97UXUmpyGHP9OQ4glGAweBiGENM7UIr2fCr1j+jhzRddKbS0pdfQSHB7HRTpZ6HcQFHVCCGmKxYu0Vben/xkuimyipVFhtCgqUX2q9ninaqGKLpi2qvZZ48z4SDvotkBxKcmEkEUzqUhPptBy3ikM//qF6rwjw7PfCqfmqb5IW7l1sjrYSu98SKaLZ9543wkhpEGWLdJOdUQ7cZEO3YIyPLtCd/mZdGhgqSnoNinSlrG8CB39TOr68GEAQghphOlEegyF9u2d9DecAUU6mVVHhXLRxArd2WrqZ65ZY9pWLedaMijSucGoteSJBSGELIg1iHQH67FaOHC4OxmPbzkqVobq2yDJq+XWMUYCSIaXNTZOhSaELJ2JRHpUhY4qHgdEBpIu0GOrUK3uNCR7MYtCdwNE2lJiq4msa9hqAHh4vnM8MEIIaZ/1iHQ7tNOFgZm0aq82MVykkdbxTNoa53c6QgghDTLDy0xWjJVYz4U63psl0qAuZl3htoJBRDrp3K9CnSaELAuK9JpJKrS61L/Wq16xBv1bLTr2YReSZwxqifRPqSaELAWK9JrJkkzkVqwuP7X1W0zGHIaUdU0aNCCEkJahSK+Z3MvPSVeIKCaHx51h7YFj4wUBE0JIy6xEpA+OMzpS1/jg+EBOvh/EZ0EkkoILuqA33AYfcM5Ni5lGE0JWzzwiXf1m752AJZUyNM5ym7RB/PflSVFXFb1ApAkhhCyaGY77Iyl052arar5bJfcFvTnRyoaikwPkXIEQQsj62BeRTpYnzYZrpCXG0iyZXhNCCNkHpj7uj6HQ1jCyapy07EukjWWcTKZlkOoiGWdnnIIQQgjZB5Yt0mo+mnU1eqDyDczX1YpS6TncTQgh+8mkx/2RXg6qJr5+OhtWHII1wK6eDZRdDo88DAyYEELIgliPSFs/w0JEzh019WU+KdK4pTPkTgghZH+Y7rg/3jc2VIlNWsqfvjHStFMXtIxOJnLjQdg+fnxxclLFFSGEkFFZlUg7ChdZqj/9RYiiI/kuYomPgRdwce/e5vDw4v79Kt4IIYSMx0QiPeqnKiNVdm6HBkU69/px8uJ3gSVYWMD5229vDg/PrlzZPnpUxSEhhJCRWI9IWz+tRQVXeUGJzW0LzNprifTmxo3diznPrlzZnp5W8UkIIWQMeC/S3hF++uLs+nXqNCGENAtFer+4ePAg/krV0dHcQS2Psk93jPHBD9DnLN8a4QdOCBkORXq/OL9zR/ma5M2bc8fVNPLLm/4nrq3PdFqipX7f0/nWp6yOdMFvSw3Gskc66/c3GTAhZAdFer/YHB2ph10+lAUSirQq1c7nQUHRGuOLnPhHS6NOFUuv/z3v5EkDhZyQHRTp/eLs2jXrmMiHsix8MbY01dchtQry0/HpyFuuSPtDBX5/VT++E6eQkD1nHpEe9WbvitVXxvbxY+fIzoeyHKTkJBPNgTmoX8vRM2c4GkmOpUiDZxjgcIIDRZoQyQwiPZJCS+PGFXr68HavMUnoNG/2NgBF18kgHZEekhnjUak/5SI87e40kcbPTsrMCNkrViLSY2ThEzBxhLvXmCR0mg9lafTSi2elLWTSfUmWSHc5vYgs/RWlnnk4bRFCphZpKnTElHH2rzFJTHwo6zK+eCRFK5kfTyPS4HA0Er/q3Er6k0FSpAlxWLxIW2bq6HdP/zNcFNlES6PCaFFUovpU7fGeDgdS6N3Eh7K6rgtyUF9rQ33C1Rc0s0Qakf8u0Fo1NidRdlJqpCO+vSXSuWJPyOqZVKTnVWg57xSGf/1Cdd6R4bnyfuU1JnKs++rVzVtvXZycbJ88GTueZQHqa1cq0rjo+q6sRiuKdG7TfiugZ0L2lmWLdK5PRDtxkQ7dgjI8l0J31mtMLk+8Gm0xRKSTOleWSWeFjTsJhwc60Z3keYbaKEWakGKmE+kxFFq196s76W84A4p0MquOCv0Uf1Ss15iE08WDB9MEszjwNBfRqslEusCJFbxqH60ENQtPtkKRJsRhDSLdwRoZzY833J0M0rccg83rr/dD2WdXr6p6c/7BB5PFszj8dDAq9DPFFkQ6OdwNBpPMif183apFCNkxkUiPqtBhRUcgrZu2JKE3q1Ct7jQkY5tSoSPMZ7Fu3ZorpEWQ1B613FejXJl0mnZwfCKqjHQ8K1QOdxMCsh6RrlJ9PJoKbPvwoS7SN27MHdp0XJycINfgk9cIokFvZ0wYtw9nqos0mA2HwUt7WaX/m1xFkR/cnpA9ZOpHsPYQK7GeF2vEe+64JuLi/v3NONfgkXWI545VFLq7rKBZIYHN7c+WQ8jEUKT3FGvEe/vw4dyhjc720aOzK1c2/PYXIaR5KNJ7ijXifXHv3tyhjcv29HSn0BveKEcIaR6K9P6ijnivW7e2p6dn16/v5zV4QsgSoUjvL/qI96p1K3pY/OzatbkjIoQQj3lEerKbvdeN/9RZEnXEu0HdGtjNnn/63vf29kY5QshCmUGkR1LofZNz9fVn8nFt34k64v1nP/tZ2cqUT42D9r5Nl/+IuTT42x/9aPob5fZtmySEVGclIr2HR0NLveQbVxzUEe/dg0nFqxSsGL4QJmmWfDOMv2j3wNUsN8rt4ZZJCKnI1CJNhR6VXJFWR7zP79zpJhTpYsDNZvvo0dOXXrJEeoIb5bh9EkKKWbxIq6mkOo4qCy1JiyzxUVxHI3GfvmVZAI7PL77znVi6bt3qLme6iM+w3I8H73sSWT0yCB+40qejI6f1gvWpBo/3iBBCQiYVafz4BR7UknXDw6hl4Bzoo+rhXyck2Sju04oTBPfZ28gR789efVXVTtmQGqdT1+9dWd9V5zviB6606bNXX/Vbr7WFUKcJIQUsW6RVS18/ZEpkuZXqAoo02LolqH5O5oP77G3UEW+nU0g3EcsqIu03jXydM+rsSFsIFZoQUsZ0Ij2GQqv2SVVIHoKl5XCRBn2qx3dcuUGfkY0c8d4+fmx1yu+m/7OuSPv/u83Nm4hCh50daQuhQhNCilmDSHeAEgyUioEijfssyCZl64jP0OYff/AD/57nBkXaMdgt2j55cv7RR//mX5A27mavuIVQoYmP+rB+7hP8iD3oU5qVvU4Ar1XmfxY2lz/+lhyDjGqV9XQikR5VoaOKVtIp81HQMrTvl1oxhEvlPOJTDQlcA6DPyPLdn/7Uuec5uZaQNSzbBX1aPUUMjo+Pt48fJ0W676wTvxWntJerlxCHISKde/Qv03KnVu4iqzCpcyAFJzfghTDpH19RFOn6HvaQ+K0mwT3Py+X4+Pji3r20SL/99tyRkn1kY3wvXC1UJcQ/+oOXe/zs0Cp0Qs0tr5tJJ7tT4MdyjlTpliLSkwGmYiQiuse7wZeDlmF9kfPStOrXlZNmkSKdzOfkT19x8TDUGatQ7QWYkuba5+JUry7SSOTJKsmo1ibSpAx5j/fcEdVhc+OGulecXb++ffLk4uRk89ZbZ6+9NneYZB8Znp46Clqs0OFPMKqsUOXPIa1kYYkoeG5RdniM1nBB7yjS5BnRiPfudqqlY+1+Fycnc4dG9h3nqO2IdG7SXJC9ZYWEO7ECniwxqJhJR2vSl/awLkWalBONDO9eDrpo1EfAd9P29HTu6MheI1PYZEpXK/tMGiMi7YenOlGFGT/bSMacFPu6Ih3OOCvBN0CgSJNnRJK2gtupzu/c0Y96t27NHRohz8BFxRG5gVmyagD6d/Jjx39uLRx/LTmLkP72wSMiLXsq20V6NI9IT3mz93KZvu+XRryXfzvV5tYtdZe7+OSTuUMj5BnO8dpKyzpDipC2kGCy6g4X6e6ydPkRJnFiwE9QHINQp62fnSHbSBOSGUR6JIVuWc4LHvydpTvRiLdj2fLa7jm7dk0q9NnVq3PHRYguS04m56duanqamymqTtT5qCN4eUXpskBitgycn/i5VFYTCCsR6WLNmExsnIbqDiEM6VE04h29HLRiQxOwPT1Vj0fn778/d2iEdB1wJxGevCZd+Q47QD4HirSVaCKxZZEl0tLe76/Mm52THtXPAkS6KYUeWLdKW9UH+Qf2KBzxTt7g3bJOXzx4oO4//pkHIRPjZ29+FWcGaSsrHlyknTMG1ZtznmElrw65Iq3GgJ95JIO0Tlac1Dxi8SKtDhRHb2cMy/sS+U7HqIo678zIhpKD2FYfVYfT9Cgc8Vbfl+mH2g7nH3ygiPQq3qRG1oSTUyYHVycQ6bJy8PTCEuZwvkykkRMFKyokfmmcpetZTCrSEyh0X+7IoTWftLS0M7T0nVuWVgB+68n5pKX0eek93kdHWT1qCvU1Jnw8mrQGnoR1hkg483hbSRt/+DfpVrVPinSW894+6yzHWY3g+RPenGXjs2yRxqurWaZlmZxPWoICPGSFjNejfsT77Pr13B61w5n4/tXZyy/PHRQhMbj4DVFfXE3x4WspadZkuUpqdoGkJYeX+1acwKLqoYEUb1/alyTSYyi0ZY+Pyo4h0lkxILKNe8uK07IMR7zLYpgd9eNXK3jym6yPKsOkQ1JkxKxAWpL+VY2v1UoB4IlObkWKtF5lpPwYscSrZ5lN2aPwHu+LBw8KejQ7FycnUqR5yxghZHFMJNKjKnRUUR0EDstlRcuyXyR9qj+t1pOd6utaSyfuUT/ifXFyUtajeZEfv+qH7gkhZEGsR6RXQDt970VuoUPEZ9evRyLNW8YIIUtk0hvHyFJ4PuK9zJeDylvG+EUNQsgSoUgTnd2I99mVK3MHko3yGhN+UYOskXnvtCLTQJEmOv2I9+Lut5Ifv+IXNUizIE8uOXUniJDMC0Wa6PQj3smXg7bG5ujo0lg3v6hBGqbswR7chiwdijQx2Y149y8HXQrRx6/O79yZOyJCuvPbt9Vy/DlpfKofPZmPqUX64EsmbpcU8GzEe4QLuuNtBvI1Josbrifr4/z27c3hYffokVzETJr4zCDS/fyL73y8m6J5FcfAquU7LGCgt7B6351kx6ckCmk34i2fMK4V8BgifXHv3iWR5hc1yNzsFHpzeLjV7o2gSBOfOUW6E7qVrJ6rDUn7LIegcYFZOyId/d2NeFuWAxlDpKOPX13cu1e9CUJQnj49/+EPnw/q3L0rTSjSxIcijToMpauKz0aEWRIGthvx3j586NgUM4ZIhx+/4i1jZE4uK/Tm8PDiww+lVdalZV6N3kNmFunOED9rEBg3k4uiEme02SoMA4gG6n2fjkOkU2pbYDfV6v6FhnB+N+L95p+8pdqAK1lGvmMUkeYXNUgLCIXeHB5evPOONBySSZN9oEWRdtJr5Jq0Wh30n7RUxS/p04rTF0irrYKuOdXVwMKf//oHr/Q3eMtGk61ba6kbQaTDT4PwljEyG599tnnlFZnmnr/xhrTlcDfxaVGk+3JfWqxCX34cUYxskAwVaTQZZ5lPq3pS+6NC/zSl67oP/viN/uWgUaPOaQdy+lJdpC+9xuT11+s6JwTCUOiKIh0usubDQmr5omlUpK3ca4hIg1lvsomC7DwZJx58ZIz49NtKroE/+vm7/ctBo/x4SI+6EUR6c+vW86FFflGDTI+t0M5lZtWTLO9LHGG2flKnl8v8It1lpsJl1Qsy1GT1eUV6uMYjTiw/WcPdlufqIt1//Ipf1CDTs717d/PNb+be2DVQpP2lFOkV0KJId9rAqTWU6g9N48Zq6/Jn5CSysXw63VHXhlPdL8Sr94uSrSMrBLGUxnVFent6+vxoyC9qkGlBFHqjvc9kVJHuONy9fPjGsaWCJMq4h4kZYzMIP34lnxkjZDxAhd5o7zMB025VepNpOlkBFMsF46TjI1Vsmf41Jnw8mkzM9te/9i9FPxdp8T6TIXd3k32AIk1WQv8aE35Rg8zA06fnb76ZFGn1fSaEOFCkyUo4u3LlWbLCW8bILDx5svnWtxIirb3PhBCHgy++eDrB9NvP/0VO0zTNaR+mf//nR7uD4H//6c9nD4bToqfig9V//v2vkpn073/8k9k7yGlZE0Wa0xqm//rob3YHwf/4u3+YPRhOi56KD1b/8+d/QZHmVH2aaLj78ye/2U39bb2fP/nNNE2Txqlyj/fuQyDru2XsFy+80P8lw5HrU25+0WFqNyHO5cu6n90k8eab3e9+t7179/zmzc21axW7Q/aBGUQ62u6dp3inofj5pSoBD3QyxkrzHyKvizxElmn27jUm5++/P0TyDwJw++LmkkhF+cULL+ymcD4s6csth1b1qFDay59+5AUNyerJtiyHVkmnnfFE/0TnYOWz+fa3FZG+cqV78gSpTojKzCLdwsO+oAfkTSDTA0Y1JNSsurkNFYt0ZPbslrEBX9QIHeLSO7FId0KWpKUvbFK0koXqUjD44Q0hOp3V4kgivf3kE/1OsS8/TkNIGXOKdDuZKOKkQZFWg1+QSFsKjShfaPPsNSYDvqhRrLXTv5ZnDJGWdZ1cHI+zoKGCMwNf7EHC/2OZSF98+KEi0hzcJoNpTqST79q03tApnciXU6qWXSAtautWdfW9mLJ16coy89sCgwf7XhZSwVqy3HawSEej0AeX6b78+NVrX/mKOv4cjWBHfqxIrOpqSI6l5S1rXD2EIq22VZbu9wwXafUh6e2nn+ZGQkhEcyLdjfmFDJl6WiVgQzI8pzqS42b1d2AmnRtSbnjJpYhII/Obo6Ozl19WfapVpDxbYmlVBwvHQNVjWaheCZbl0rOct2xUhwMb8oepLZ8tiPTmu99V7hcjZDCLEenOEJXhIq3mx/58siGkulM+PL0uaMVpXc7nnsqooSazXtVGlp9du9Z/UQMU6aiwikgPyY9xLJGW6bVTXc5bi6T0ZsWJNyTbtWzUtpDgHYaK9KNH8bu7eb8YqcSSRFotGSLS46XsSHWnPFd3kw3NK9JqK12+oFrGFycn/Rc1ZhRp1YN0OHy4uxMirZY41eW8s6gsSc1qKDzJyG3UvyYNBjxQpLd37/J+MTISLd7dPdlwd5siLV0Nb6gRkZZLk6PZyHC35TDL5xiFYzCNSHeA5lVJ2ZMN4T0qq97VuLv7/PZt3i9GRqKh56RDezlGag2Z9ovU6pGBdBWVWK3Lhqwm1B453rKaVpvw47QKy0JSV3Kydesf12nDxdG8/BnWjaRRzVB9b8mG/EIkzopEGacciE4KZzQw7o8Mq5d+rSvNwxuSNuBAtzrUDw50d1VE+vJrTHi/GKnIDCK9g28cIztGVTWyIHBZrYjc/LLfOPb06eall3i/GBmJqUU6nKZpmhBCcHIPVtv793m/GBkPfmCDEydOnJ5PuQerp3/1bi/ST//yr2ePn9PKJoo0J06cOD2fcg9Wv//xT3YK/X9/eHX24Dmtb+LlQEIIKaf/rgbvFyNjQJEmZH/Bb5/G77hOupVLq9wvluWkmvGXrzH57de/nlxLuW9oyYuErJSpRXqCx1TIxPC/2Sz+c1ngU1tgiSrnVeQKRA3DN85yqy69+OUvN4eH//uNb0T3i/nrXMbpr2fnsW8Znro/8sC7XGYQ6ajEeQB6VKLHfJ03eHTuk77DwxjV59grFnlSWVZZ7vEiDL7xjiAKLeelWa7oFjgc/vCVKmPW09gVTyZ239X49Gtfy+qOjFY2FP371P+m9S+2tslmt1XiMLNIJ1+VlWSIAuW27r9Oa3gMjs9a3axr3NkfycitVYVpDkGRSE/RZBGOSI834FyWIA4PABHp3LaQtbT5/vez3i9mibE0S649xwNFek3MKdJVMrzJ1Eu1H9iF8D1ovs82RdoaWCurOByKdJL+0C+lVKpCcdZbK5MGM+zQDE+OHUt8LW3v3v3VV7+K9EgG6XdTPdvAT2WK903SGs2JtPWuze7yAHX00x+ddl5gKSNxRraTb9C0PEQxRw79OJNv31SN1XjUFVuwPnvAA4H6Bk1ZsTMGkKPqB4Ku6w4OLk1B3Wc/5Uw0HzrxsUQaCR4pxKtLm7rnDWAmquqZo1XJ+bAQPCFwWvGD940RBubrakW59py0W4UivRqaE+lOaKFTqDpxqjui6DgB20rGaRkXZ9LIyYQV0sD1uQM5EETqAlaUlsjxRTWRuhsJs1NotHIQ/U0GP7BQXdqNf8zFBdWSELWkLDtHQs1KZ60Iy5r258PW8VEEtRAMmCK9GhYj0p2rc8nqlkgjTsC2wiCdrF01LmjaKpTlw0XaOpsBDwRqguhXrCvSTkmUVSPJtCXSTtYrPVhrIEqRoxmnIRBHJwZmvZZzP5jc+EFXjuwhcj7SWiqQcxmMvx56KNKrYUkirZZUEWk/BjwYx2dWzl0cj1peMZOOyDoQJFNAJ190VOryIrVdr0TNpH2SmbRVxS90JNl35awQB+RwXyDSfkmW+HU5iaMqsUiQw08jqot0dDKRG88OivRqmFOkuxz9GGm424pzjOHuYsusQlk+3nB3Z2iG9dMfv00WJqkl0kGhngd3rkiPUSiXWgYISTVVlyaVr3omXSDSjsKpjTr+q6+lLEt8DFyCnCiTpTCzSHfAvU69sqqW/SLHZ+hEde437VdJtq4Gr3bN8SkL1XiSwSd7CvaoJzkS65dYWbLqU7auxRPLrTqCrQ5uS0s1kY1EWvbLD97qkVwnSUtkhUjwRLbThMQZ7y1TtSpEqoyH5Jx21F1LBZZgocTaNoq3GTIjM4j0kOMLaZBR/5uRvI3XEBLAjE1PEAYoHqpxgQfLSRll+XHWVV6roSptgec3SLTqpsID73Lh/4y0zlzHlxYOajy2ErLncOcnhBBCGoUiTQghhDQKRZoQQghplAWI9HvvvTdZLUIIIaQdFi/S713GqfWezShxE0IIIcOYVKQLRHFnDFZJijRoSQghhLTAdCJdoIu5VSjShBBC1kS7It3byJnIjMPdhBBCVkmLIu3IrdRUyxUzaUIIIUunRZF2KuJLKdKEEEKWzhpEmsPdhBBCVsniRRpvgpk0IYSQZUGRpkgTQghplNafk+4o0oQQQvaVxb9xrDO0H7kJnNekCSGEtMwCRJoQQgjZTyjShBBCSKNQpAkhhKyT4xrM2wWKNCGEkHUyXGIp0oQsmIMD7kGEtILcHynS9Tk46NTj3q7cWjSEF9/5ePrqL77zcTgNCUB1W+zhIGB4PKGrArcHlxkSAOghq63ezO/mwMizokqaVfzn7gg3uYLNb+DmWms/Uj3In8WtqGupbNUlzUBXa903IwOK9Cg4/4Ux8hZwr6sopdJhXefSG+h/uLSoPsMDQUH14SEViG6u23ZWHXi8Q1zhu0aoNEiVglaQ6sUKilcvjlaNs2zV1YpzlfsmRXoKphTpfg8BLas3PYbzKiJdiyUeCAqMKdLd8kW6urFVkSKdW7F436RIw80cXJrCQmteHdyOShwzZ3g8RBVpayQq2pGsYaWo3NoPrWE6v1C68ofpcscD1Z0hGmgKfzqLwpJOHAisitJMzoM+LSeyrtU66DMsAeORrYcerBnHrbX2wOAjsjab5Bbu+8R3BGv7Dw3qhqR21lpX/lrq6yZ7ZPnMPQol4wE3MGvvUOezNlrpRNa1Wgd9UqRzWjpQ5vFC9WfSpkCkkXnpwa+iHlOs8wO1OlhohYrssT3grphVGP7NtXT2z6hEnVd/+pEU+JSRIxWRtYSvOqTQCl4F3GzCLRnZaHFLdR6RLssyOW/ZW4WIn8hAVileIVkHAck+7JsU6ZyW5hDpJOqZqWWJlBfsYFZWkTw2ITH4wTv4J63Wniz32+TujWuSE54VUvLnLCKd1fchIu0cRjuAgSItt+QsTbJ2BDBI37KiSFtnCVbduiLtnKP4wXT7sW9SpHNaak+kkzuDZeyUDxfp3ID9GBC3KqAY+DtSl7N7L/dAIOMHW1frVhRp2VByUUitTBq3LNgNZxdpta7jcKRMGgk+Yh/2TYp0TktziLR/LMoaQRpPpCsWWqGChxJcADqxx/rVcaVZyoEALMlt3SoZKNLJFaJGXkukyzJpNYyWRRpZXWr1KiJdMZOODBBL6dYqGXvfjCwp0jktGTdzHYh7ylRLaWYVhuUO4RjRi2JQTh28elEbgpbGvje1lt+62orqygpJBq9yEGCVJ/ec0Kaf7/9Gi3xLNRgkTidyp13Qp999cL2pDYUe8FXntIWskMh5RHKzCbe9zt2SLcvk5i1LwF21zGfn7qTJ/d1HVkRWHRKVbybBNzDV0tov8P1I+nHaBX12Yh/cSaz6dk+wcL9EmpCVYWkbIWR65P5IkYabwR6IIoQ0S5SigbnjvsG11BQc7iaEEEIahSJNCCGENApFmhBCCGkUfk+aEEIIIWNBkSaEEEIahSJNCCGENApFmhBCCGkUijQhhBDSKBRpQgghpFEo0oQQQkijUKQJIYSQRqFIE0IIIY1CkSaEEEIahSJNCCGENApFmhBCCGkUijQhhBDSKBRpQgghpFEo0oQQQkijUKQJIYSQRvl/B+0DyH9ptRcAAAAASUVORK5CYII=" alt="" />
验证结果:如果包含特殊字符:如果是ajax请求则返回json,否则返回到错误页。
MVC 记录操作日志与过滤特殊字符的更多相关文章
- Appfuse:记录操作日志
appfuse的数据维护操作都发生在***form页面,与之对应的是***FormController,在Controller中处理数据的操作是onSubmit方法,既然所有的操作都通过onSubmi ...
- Tomcat会话超时时怎样记录操作日志,满足安全审计要求
众所周知.在实际的Web应用程序中,会话管理一般都採用Web容器会话管理功能. 使用Tomcat做Webserver也是如此,并且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能. To ...
- 使用SpringBoot AOP 记录操作日志、异常日志
平时我们在做项目时经常需要对一些重要功能操作记录日志,方便以后跟踪是谁在操作此功能:我们在操作某些功能时也有可能会发生异常,但是每次发生异常要定位原因我们都要到服务器去查询日志才能找到,而且也不能对发 ...
- Spring aop 记录操作日志 Aspect
前几天做系统日志记录的功能,一个操作调一次记录方法,每次还得去收集参数等等,太尼玛烦了.在程序员的世界里,当你的一个功能重复出现多次,就应该想想肯定有更简单的实现方法.于是果断搜索各种资料,终于搞定了 ...
- springboot springmvc拦截器 拦截POST、PUT、DELETE请求参数和响应数据,并记录操作日志
1.操作日志实体类 @Document(collection = "operation_log") @Getter @Setter @ToString public class O ...
- MVC增加操作日志
在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. ...
- .Net捕获网站异常信息记录操作日志
第一步:在Global.asax文件下的Application_Error()中写入操作日志 /// <summary> /// 整个网站出现异常信息,都会执行此方法 /// </s ...
- 自定义日志注解 + AOP实现记录操作日志
需求:系统中经常需要记录员工的操作日志和用户的活动日志,简单的做法在每个需要的方法中进行日志保存操作, 但这样对业务代码入侵性太大,下面就结合AOP和自定义日志注解实现更方便的日志记录 首先看 ...
- spring-boot-route(十七)使用aop记录操作日志
在上一章内容中--使用logback管理日志,我们详细讲述了如何将日志生成文件进行存储.但是在实际开发中,使用文件存储日志用来快速查询问题并不是最方便的,一个优秀系统除了日志文件还需要将操作日志进行持 ...
随机推荐
- 分方式缓存常用的一致性hash是什么原理
分方式缓存常用的一致性hash是什么原理 一致性hash是用来解决什么问题的?先看一个场景有n个cache服务器,一个对象object映射到哪个cache上呢?可以采用通用方法计算object的has ...
- HTML5 十大新特性(一)——语义标签
说语义标签前先来理解下什么叫语义化,当下html是靠div+css来铸造页面的整体框架和结构的,通篇大量的div可读性极低,因此诞生了这些特殊的标签,简单地说就是见名知义,使页面更清晰,方便维护和开发 ...
- mysqld_safe启动报错 mysqld_safe The file /usr/local/mysql/bin/mysqld does not exist or is not executable
报错(如下),但是使用mysqld直接启动没有问题. 150718 00:03:38 mysqld_safe Logging to '/var/log/mysqld.log'. 150718 00:0 ...
- 【原创】Mac os 10.10.3 安装xgboost
大家用的比较多的是Linux和windows,基于Mac os的安装教程不多, 所以在安装的过程中遇到很多问题,经过较长时间的尝试,可以正常安装和使用, [说在前面]由于新版本的Os操作系统不支持op ...
- org.apache.commons.lang.StringUtils类
org.apache.commons.lang.StringUtils类 本文摘自:(http://www.blogjava.net/japper/archive/2012/05/23/378946. ...
- asp.net mvc处理css和js版本问题
当服务的修改了js和css内容后,发布到IIS服务器上,总是导致客户端内容显示不正确,原因是客户端存在缓存,还是加载的原来的js和css问题. 在css或js后面添加版本号,例如: <scrip ...
- redis入门指南-安装redis
纸上得来终觉浅 绝知此事要躬行 Redis官方不支持window.微软发布了可在redis的分支.不建议使用 但我确实用了. win7 redis2.8.4 php5.6 apache2.4 ht ...
- c# windows编程控件学习-2
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- jquery替换URL参数值
由于经常会用到替换URL参数值,而网上写的方法代码都太长了,所以在这里写了一个简单的方法,供大家使用. 说明: reLoad(参数名,参数值) function reLoad(p, v) { var ...
- Python的平凡之路(8)
(本文是对平凡之路(7)的补充等) 一.动态导入模块 import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importl ...