Es gibt einige Dinge, die Sie tun können.
Am einfachsten können Sie eine benutzerdefinierte ActionFilterAttribute
erstellen, die Ihren Serviceaufruf validiert, bevor Sie Ihre API-Controller-Methode eingeben.
Ich habe hier einen Guid
Wert verwendet, aber Sie können alles verwenden.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class CustomValidateRequestAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var headerValue = actionContext.Request.Headers.FirstOrDefault(item => item.Key == "validation-value").Value?.FirstOrDefault();
Guid guidValidationValue;
if (string.IsNullOrWhiteSpace(headerValue) && !Guid.TryParse(headerValue , out guidValidationValue))
{
throw new UnauthorizedAccessException();
}
base.OnActionExecuting(actionContext);
}
}
Sie dieses benutzerdefinierte Attribut auf Ihre AddPost
Methode in der API-Controller hinzufügen.
In Ihrem Dienst auf der Client-Seite müssen Sie diesen Header-Wert zu den Headern hinzufügen. Etwas wie:
addPosts(url, data) {
let headers = new Headers();
headers.append('validation-value', 'your-guid-value-or-something-else');
return this.http.post(url, {
headers: headers
});
}
Für eine kompliziertere und sicherere Möglichkeiten, können Sie überprüfen, wie Anti-Fälschungsmiddleware here und here zu implementieren.
Lassen Sie mich versuchen, dies zu verstehen, indem Sie Ihre Frage neu formulieren. Sie möchten Ihren Serviceendpunkt schützen können, damit er nicht außerhalb Ihrer Anwendung aufgerufen werden kann, aber Sie möchten die Anmelde-/Registerfunktionalität nicht implementieren? Ist es das, was du meintest? – eminlala
Ja, ich möchte die einzige Person sein, die Beiträge zum Beispiel hinzufügen kann. Und ich möchte die Register/Login-Funktionalität nur dafür implementieren. Es wird nett sein, wenn du von außerhalb der Anwendung auf diesen Dienst zugreifen kannst (vielleicht werde ich einen Moderator einstellen, der Beiträge hinzufügen kann ... also kann ich ihm die "Schlüssel" geben, um nur auf diese API zuzugreifen, aber jetzt ist es in Ordnung, das nicht zu tun außerhalb der Anwendung zugegriffen werden) – Marian