我也不确定如何为 cshtml 页面完成此操作,因为它们没有类。
您可以放置一个_ViewStart.cshtml
文件,其内容将在每个请求上执行。
或者你可以写一个custom Http Module
:
public class MyModule: IHttpModule
{
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(OnBeginRequest);
}
public void Dispose()
{
}
public void OnBeginRequest(object s, EventArgs e)
{
// this code here's gonna get executed on each request
}
}
然后只需在您的 web.config 中注册此模块:
<system.webServer>
<modules>
<add name="MyModule" type="SomeNamespace.MyModule, SomeAssembly" />
</modules>
...
</system.webServer>
或者如果您在经典模式下运行:
<system.web>
<httpModules>
<add name="MyModule" type="SomeNamespace.MyModule, SomeAssembly" />
</httpModules>
</system.web>
基本上,我必须检查访问该网站的用户是否具有针对数据库的特定 IP 地址,如果是,则允许访问,否则重定向。
在该OnBeginRequest
方法中,您可以获得当前用户 IP:
public void OnBeginRequest(object sender, EventArgs e)
{
var app = sender as HttpApplication;
var request = app.Context.Request;
string ip = request.UserHostAddress;
// do your checks against the database
}