Piuttosto simile a questa domanda qui l'applicazione corrente su cui stiamo lavorando ha progetti MVC 4
e WebApi 2
separati, in cui il progetto MVC
sta elaborando la richiesta dell'utente su WebApi
che esegue effettivamente la logica di business e poi di nuovo il MVC
è responsabile della visualizzazione del risultato all'utente. Una cosa che non riusciamo ancora a capire è come autorizzare correttamente un utente su entrambi: WebApi
e MVC
. Il problema è che, quando ad esempio, la sessione è scaduta, non vogliamo che la richiesta di alcune risorse venga elaborata nuovamente in WebApi
, che poi verificherà se l'utente è effettivamente autorizzato a vedere questi dati, cosa voglio capire come condividere una logica comune per l'autorizzazione quando, ad esempio, l'utente, se la sua sessione è scaduta, viene restituito alla pagina di accesso, ma se il suo stato è corretto per essere elaborato sul WebApi, dove di nuovo l'utente potrebbe essere controllato se ha i diritti per accedere ad alcuni dati.
Cercherò di rendere la domanda più autoesplicativa:
Ho una soluzione con due progetti - project1 - ASP.NET MVC 4
e project2 WebApi 2
project. Il progetto MVC ha più funzioni di rappresentazione ed è uno strato tra l'utente e il luogo in cui viene implementata la logica aziendale effettiva ( WebApi
). Ad esempio, se vado su Products
page, richiamo un'azione da MVC
ma qui è la parte difficile: l'utente potrebbe non essere in grado di inserire la pagina Products
a tutti (la sessione è scaduta per esempio) in questo caso non voglio procedere con la chiamata al metodo WebApi 2
che alla fine si occuperà di controllare se l'utente è autorizzato o meno a vedere questi dati, ma in questo caso voglio l'azione MVC
per reindirizzare l'utente a una pagina LogIn
o qualcosa del genere. E l'altro caso - l'utente ha effettuato l'accesso con successo, la sua sessione non è scaduta quindi viene chiamato il servizio responsabile per il recupero dei prodotti, ma a questo punto voglio verificare quale tipo di prodotti l'utente ha i diritti di vedere. Quindi in entrambi i casi ho bisogno di una sorta di autorizzazione, ma la prima volta dovrebbe essere eseguita nel progetto MVC
e la seconda volta nel progetto WebApi 2
. E non sono sicuro che sia possibile, ma sto cercando un modo per implementare questa logica di autorizzazione in un posto e consumarlo dove ne ho bisogno invece di implementare qualcosa esplicitamente per il progetto Mvc
e poi qualcosa di più lo stesso per WebApi 2
project