5

So che questa domanda potrebbe ricevere alcuni downvotes, ma sto cercando su Google per tre giorni, senza risultati realmente utilizzabili.Come aggiungere "ApiController" con autenticazione token all'interno di Asp Net Core RC1 MVC

Ho creato un progetto predefinito RC1 di ASP.NET Core 1.0 in Visual Studio, con autenticazione/autorizzazione account utente individuale. Tutto è facile e semplice in questo modo, perché il progetto è impalcato usando Microsoft.AspNet.Authentication.Cookies e VS 2015 fa tutto il lavoro pesante.

Tuttavia, vogliamo esporre un'API dallo stesso progetto (utilizzando lo stesso database, utenti, attestazioni e così via), che verrà consumata dai dispositivi mobili e persino da alcune semplici SPA. In questo modo, abbiamo bisogno di utilizzare qualcosa come JWT per l'API (ci sono un sacco di tutorial su come farlo solo con WebAPI).

Vogliamo eseguire il progetto principale utilizzando MVC (non SPA) per sfruttare l'uso di scaffold di visualizzazione/controller e tutto ciò che Visual Studio può offrire.

Esiste un sacco di tutorial per solo MVC o solo per WebAPI, ma potresti indicarmi come potrei unirli?

C'è un modo di utilizzare JWT solo con MVC e WebAPI a livello di sistema?

Grazie in anticipo.

+0

Cordiali saluti: MVC e WebAPI sono stati fusi in MVC 6 . 'Controller' funge da classe base per entrambi i controller 'MVC' e 'API', ad es non c'è più 'ApiController'. –

+0

Ciao @HenkMollema Lo so ... Per questo motivo ho messo "ApiController" tra virgolette. So che i controller sono gli stessi. Comunque, grazie per il commento. –

+0

Ciao @Cezar. L'hai mai capito? Ho lo stesso identico scenario e domanda. Grazie –

risposta

1

Limiting identity by scheme questo link potrebbe essere la risposta alla tua domanda.

In alcuni scenari, come la singola pagina delle applicazioni è possibile finire con più metodi di autenticazione, autenticazione cookie per il login e l'autenticazione portatore per javascript richiesta.

penso, è possibile utilizzare sotto codice per MVC e JavaScript chiama (ovviamente, è necessario abilitare cookie e portatore middleware):

[Authorize(AuthenticationSchemes = "Cookie,Bearer")] 
public class YourController : Controller 
+0

Grazie per la risposta! Ho paura che questo non funzioni in ASP.NET Core 1, perché c'è solo un attributo 'ActiveAuthenticationSchemes', ed è fuori dal costruttore. Ora, l'unica cosa che accetta come parametro è una stringa che contiene il nome della politica: 'public AuthorizeAttribute (string policy);'. Potresti indicarmi come dovrei creare un criterio "Solo WebAPI"? –

+0

non ho potuto testare il codice, ma potrebbe essere una soluzione: 'options.AddPolicy (" PolicyName ", policy => { policy.Requirements.Add (new Infrastructure.MinimumAgeRequirement (21)); policy.AddAuthenticationSchemes (" Portatore "); });' –

Problemi correlati