アプリケーションのさまざまなセクションへのアクセスを制御する正しい方法を見つけようとしています。
私のアプリには 3 つのセクションがあります。
- 管理者
- スーパーユーザー
- 一般ユーザー
http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspxを読んだので、持っていても理解していますそれぞれに領域がありますが、それを承認に使用したくありません。
私の考えは、セクションごとに 1 つずつ、3 つの基本コントローラー クラスを持つことです。AdminBaseController
、、、SuperUserBaseController
のようなものRegularUserBaseController
。
その後、それぞれに を追加できることはわかってAuthorizeAttribute
いますが、必要なロールを設定に保存したいので、それらを属性に設定できません。
だから私は を継承しAuthorizeAttribute
てオーバーライドする必要があると考えていますOnAuthorization
、そしてこれが私が立ち往生している場所です。これは私がこれまでに持っているものです。
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.ControllerContext.Controller is AdminBaseController)
{
//do something
}
else if (actionContext.ControllerContext.Controller is SuperUserBaseController)
{
//do something
}
else if (actionContext.ControllerContext.Controller is RegularUserBaseController)
{
//do something
}
else
{
//someone forgot to use a base controller
//deny be default
}
}
Roles
andUsers
プロパティを正しい値に設定してから、最後に呼び出すだけだと思いますbase.OnAuthorization
。これは合理的な解決策のように思えますか? また、すべてを拒否するには、両方のプロパティを に設定する必要があります""
か?
私が道を外れている場合は、より良い方向に向けてください。