wake-up-neo.com

Lokaler Benutzerkontospeicher für Web-API in ASP.NET Core 2.0

Ich verwende ASP.Net Core 2.0. Ich möchte ein Web-API-Projekt mit dem Autorisierungstyp "Individuelle Benutzerkonten" erstellen. Die einzige Option ist Connect to an existing user store in the cloud. Create new project screenshot

Wie kann ich eine Vorlage für die Web-API mit individuellen Benutzerkonten mit Store user accounts in-app hinzufügen?

Diese Option ist für Webanwendungen verfügbar, nicht jedoch für Web-API.

23
Kahbazi

Starten Sie Ihr Projekt in der Konsole mit dem Befehl 

dotnet new webapi -au Individual

Sie können Ihr Projekt danach in VS öffnen. (um den Dialog zu umgehen). Dann können Sie beispielsweise das Berechtigungsattribut verwenden. Das Projekt ist jedoch weiterhin für die Verwendung der Azure-Trägerauthentifizierung konfiguriert . Sie müssen entscheiden, woher Sie Ihre Identität beziehen. Sie können identityserver4 verwenden oder eigene "benutzerdefinierte Speicheranbieter für ASP.NET Core Identity" erstellen ( MS-Docs )

Der Unterschied zu MVC WebApp: Hier haben Sie einen Account Controller mit Ansichten, um Registrierungen zu bearbeiten und einen Benutzernamen, ein Kennwort usw. zu erhalten.

13
Kirsten

Ich war durch dasselbe verwirrt und wählte schließlich Web Application anstelle von Web API aus. Es gibt wahrscheinlich eine Logik in MS, die "In-App-Konten" entfernt. Mit der Web-API schreiben Sie wahrscheinlich SPA und "Ansichten" (Login, Passwort vergessen usw.) sollten in Ihrem Client-Code enthalten sein. nicht Rasiermesseransichten auf dem Server.

Wenn Sie mit IdentityServer 4 arbeiten, werden die Ansichten in der IS4-Anwendung generiert. nicht in Business API-Anwendung.

Ich denke, Microsoft versucht Ihnen hier einen Hinweis zu geben ...

3
Felix

Um die Antwort zu erhalten, baute ich sowohl die API-Version ohne Authentifizierung als auch die Version mit auf, machte dann einen Unterschied in den generierten Ordnern (und ignorierte den einen zusätzlichen Codeblock in appsettings.json, der erscheint, wenn Sie die Option cloud-auth verwenden).

Es stellt sich heraus, dass die Aktivierung der Authentifizierung nur wenige Codezeilen erfordert.

Wenn Sie die folgenden Änderungen an einer No-Authentication-Version der API-Vorlage vornehmen, verfügen Sie über eine Authentication-Version:

Fügen Sie in Startup.cs Folgendes hinzu: using Microsoft.AspNetCore.Authentication; im Abschnitt "using". Fügen Sie außerdem Folgendes hinzu: app.UseAuthentication(); unmittelbar vor app.UseMvc();:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseAuthentication();
    app.UseMvc();
}

Fügen Sie in Controllers\ValuesController.cs den Code using Microsoft.AspNetCore.Authorization; im Abschnitt "using" hinzu. Fügen Sie außerdem Folgendes hinzu: [Authorize] unmittelbar darüber [Route("api/[controller]")]

Das ist alles, was Sie brauchen, um der Vanilla API-Vorlage eine Authentifizierung mit Vorlagen hinzuzufügen. Natürlich müssen Sie den eigentlichen Authentifizierungscode hinzufügen, aber auf Vorlagenebene sind Sie fertig.

(Randbemerkung: In der Auth-Version wurde optional auch von Microsoft die Annahme vertreten, dass Sie UserSecretsId verwenden. Wenn Sie dies ebenfalls möchten, klicken Sie mit der rechten Maustaste auf die Lösung und wählen Sie Manage User Secrets (Verwalten von Benutzerverheimnissen).)

0
Clearhat