3 Stimmen

Verwenden Sie Attribut, um die IP-Abfrage-Beschränkung zu erstellen.

Ich möchte folgendes tun (Pseudo Code):

[InternalOnly]
public ActionResult InternalMethod()
{ //magic }

Die " InternalOnly "Attribut ist für Methoden, die die HttpContext IP für einen bekannten Wert anzufordern, bevor man etwas anderes tut.

Wie würde ich dieses " erstellen? InternalOnly Attribut "?

6voto

Todd Smith Punkte 16604

Sie können ein benutzerdefiniertes Filterattribut erstellen:

public class InternalOnly : FilterAttribute
{
    public void OnAuthorization (AuthorizationContext filterContext)
    {
        if (!IsIntranet (filterContext.HttpContext.Request.UserHostAddress))
        {
            throw new HttpException ((int)HttpStatusCode.Forbidden, "Access forbidden.");
        }
    }

    private bool IsIntranet (string userIP)
    {
        // match an internal IP (ex: 127.0.0.1)
        return !string.IsNullOrEmpty (userIP) && Regex.IsMatch (userIP, "^127");
    }
}

1voto

Andrew Hare Punkte 332190

Dies ist ein Beispiel für ein Problem, das mit einer AOP-Lösung (Aspect-Oriented Programming) gelöst werden kann. Für diese Art von Problemen empfehle ich normalerweise PostSharp .

Mit PostSharp können Sie grundsätzlich Attribute erstellen, die Sie als Markierungen für Stellen in Ihrem Code verwenden können, in die Sie Boilerplate-Code einfügen möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X