1

簡単なコンテンツ管理機能を備えた ASP.NET MVC3 でイントラネット Web アプリケーションを開発しています。この Web サイトは、イントラネット内の誰でも閲覧できますが、登録ユーザーのみが編集できます。イントラネットの外からは、登録ユーザー以外は閲覧できないようにします。

誰かがイントラネットの外部から Web サイトにアクセスしているかどうかを確認し、ログイン ページにリダイレクトする方法はありますか? これは IIS または C# で行う必要がありますか? この問題にどのようにアプローチすればよいか本当にわかりません。利便性の高い[Authorize]属性を引き続き使用したいと思います。

誰でも助けることができますか?事前にどうもありがとうございました。

4

2 に答える 2

2

クライアント IP アドレスがローカル イントラネットに属しているかどうかを確認し、匿名アクセスを許可するかどうかを確認するカスタム Authorize 属性を作成できます。それ以外の場合は認証が必要です。

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var ip = httpContext.Request.UserHostAddress;
        if (IsIntranetAddress(ip))
        {
            // The IP address of the client belongs on the intranet => 
            // allow anonymous access
            return true;
        }

        return base.AuthorizeCore(httpContext);
    }

    private bool IsIntranetAddress(string ip)
    {
        throw new NotImplementedException();
    }
}

[MyAuthorize]コントローラー/アクションを属性で装飾します。または、すべてのリクエストに適用する場合は、グローバル アクション フィルターとして登録します。

于 2012-10-16T16:39:53.363 に答える
0

ファイアウォール設定からユーザーを制限するだけでよく、パブリックIPを割り当てない場合は、インターネットユーザーがアクセスすることはありません。

于 2012-10-16T12:48:45.903 に答える