ASP.NET中是否有办法验证使用BundleConfig ScriptBundle创建的虚拟路径/路由中发送的请求参数?
示例:
我有一个BundleConfig配置如下:
bundles.Add(new ScriptBundle("~/bundles/bjqs").Include(
"~/Scripts/bjqs-1.3.js"));
如果用户发送如下请求:
http://example.com/bundles/bjqs?v=parameter-value_to%be+validated
在ASP.NET处理/处理请求之前,如何验证查询字符串v参数中传递的值对正则表达式?
答案 0 :(得分:1)
您可以使用自定义HttpModule拦截请求。例如:
public class MyModule1 : IHttpModule
{
public void Dispose() {}
public void Init(HttpApplication context)
{
context.AuthorizeRequest += context_AuthorizeRequest;
}
void context_AuthorizeRequest(object sender, EventArgs e)
{
var app = (HttpApplication)sender;
// Check if the parameter is valid, your logic
if (ValidateRequest(app.Context.Request))
{
// Then do nothing
return;
}
// Otherwise, return unauthorized response
app.Context.Response.StatusCode = 401;
app.Context.Response.End();
}
}