Sto scrivendo la prima applicazione API Web ASP.NET. Conosco altri framework per applicazioni web (principalmente Symfony, ma anche Django e, in misura minore, RoR).Recupero e stato permanente tra richieste
Sto faticando un po ', per capire la sequenza di eventi che si verificano dopo che una richiesta viene inviata da un browser/front-end client, al server web.
Sto scrivendo un'applicazione multi-tenant, che utilizza un back-end DB. Sto usando ADO e SQL raw per accedere al database, ho anche bisogno di memorizzare un sacco di informazioni, per utente, in modo tale che, in sostanza, creo (o recuperi dalla cache), un contesto precaricato, per l'utente.
Ecco uno pseudo-codice, che illustra, cosa sto cercando di ottenere, in ASP.NET.
namespace myApp.Controllers
{
public class FoobarController : ApiController
{
public Response doLogin(request)
{
var ctx = myApplicationContext.getInstance();
var user = ctx.getUser();
if (!user.isLoggedOn())
{
username = request.getParameter('username');
password= request.getParameter('password');
dbManager = ctx.getDbInstance();
resp = dbManager.internalLogin(username, password);
// Load permissions etc for current user, from db
// Store user info in cache ..
}
}
public Response ActionOne(request)
{
ctx = myApplicationContext.getInstance();
user = ctx.getUser();
if (user.hasPermission('xxx'))
{
}
}
}
}
La mia domanda, è, come faccio a implementare questo tipo di funzionalità:
Vale a dire:
Creare un contesto di applicazione, in cui posso compilare con le informazioni sensibili contesto come un connessione a database, configurazione mailer, fabbriche oggetto, informazioni di stato varie ecc.
Accedere a un oggetto utente (che è possibile d credenziali utente, permessi etc a)
Avere accesso alle variabili di sessione ecc.?
Note
- sarò Distribuzione del web app su Linux, e userò Apache come server web.
- Ai fini di questo progetto, non voglio utilizzare alcuna tecnologia Microsoft come Azure, Autenticazioni Windows ecc. (Diverso da C# e ASP.Net)
- Voglio utilizzare una connessione di database non elaborata, non utilizzare Entity manager (porta applicazione legacy)
Hai guardato in OWIN e ASP identità? Al momento l'identità viene fornita con il modello di applicazioni ASP, così come OWIN, e gestirà tutte le tue esigenze di autenticazione. OWIN è un framework più basilare su cui tutto il resto (teoricamente) si trova - se stai cercando di costruire il tuo framework di autenticazione proprio per l'apprendimento, inizierei con OWIN. Ci sono alcuni tutorial sul sito Web ASP.net. –