2

MVC 3ソリューションには、多くのセクションがあるサイトがあります。お客様は、IPアドレス(管理者部分から)によって各セクションへのアクセスを管理できるようにしたいと考えています。この要件を実装する標準的な方法は何ですか?なるほど、次のようになります。すべてのセクションには、IPアドレスを表すワイルドカードのリストがあり、このワイルドカードを使用してIPアドレスを検証します。

4

1 に答える 1

3

コードで直接 IP アドレスを使用しないことをお勧めします。これらは時々変更される傾向があります。多くのパーソナル ファイアウォールと同様に、「ゾーン」のシステムを作成します。

私の解決策は基本的に次のようになります:

カスタム承認属性を作成する

public class AuthorizeZone: AuthorizeAttribute
{
    private string _zone; 
    public AuthorizeZone(string zoneName)
    {
        _zone = zoneName;
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var zone = GetZoneIpMappingsFromXMLorDB_IdeallyCached(_zone);
        return zone.ContainsIp(httpContext.Request.UserHostAddress); // implement by simple list or ip-mask
    }        
}

次に、このように使用します

[AuthorizeZone("Intranet")]
public ActionResult Foo()
{}

ゾーンの定義はあなた次第です。XML、データベースなどを使用します...

于 2011-11-09T12:58:24.387 に答える