Ich schreibe meine erste ASP.NET Web API-Anwendung. Ich kenne andere Webanwendungs-Frameworks (hauptsächlich Symfony, aber auch Django und in geringerem Maße RoR).Abrufen und persistieren Zustand über Anfragen
Ich habe ein wenig Mühe, die Reihenfolge der Ereignisse zu verstehen, die auftreten, nachdem eine Anfrage von einem Browser/Front-End-Client an den Webserver gesendet wurde.
Ich schreibe eine Multi-Tenanted-Anwendung, die ein DB-Backend verwendet. Ich verwende ADO und RAW-SQL, um auf die Datenbank zuzugreifen, ich muss auch viele Informationen pro Benutzer speichern, so dass ich im Grunde einen vorinstallierten Kontext für den Benutzer erstellen (oder aus dem Cache abrufen).
Hier ist ein Pseudo-Code, der veranschaulicht, was ich versuche, in ASP.NET zu erreichen.
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'))
{
}
}
}
}
Meine Frage ist, wie kann ich diese Art von Funktionalität implementieren:
Nämlich:
einen Anwendungskontext erstellen, in dem ich mit kontextsensitiven Informationen wie eine bevölkern können Datenbankverbindung, Mailerkonfiguration, Objektfabriken, verschiedene Statusinformationen usw.
Zugriff auf ein Benutzerobjekt (das ich anzeigen kann d Benutzeranmeldeinformationen, Berechtigungen usw.)
Zugriff auf Sitzungsvariablen usw. haben?
Hinweise
- Ich werde die Web-App unter Linux werden die Bereitstellung, und ich werde Apache als Webserver verwenden.
- Für den Zweck dieses Projekts möchte ich keine Microsoft-Technologie wie Azure, Windows Authentications etc. (außer C# und ASP.Net) verwenden
- Ich möchte eine rohe Datenbankverbindung verwenden, keine Entity Manager (Legacy-Anwendung Port)
Haben Sie OWIN und ASP Identität sah in? Identity kommt mit der Vorlage von ASP-Anwendungen in diesen Tagen, wie OWIN, und es wird alle Ihre Auth-Bedürfnisse behandeln. OWIN ist ein grundlegenderer Rahmen, auf dem (theoretisch) alles andere sitzt - wenn Sie Ihr eigenes Auth-Framework nur zum Lernen aufbauen möchten, würde ich mit OWIN beginnen. Es gibt einige Tutorials auf der ASP.net-Website. –