また、クラスがないため、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>
基本的に、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
}