it-swarm.com.de

Cookies und ASP.NET Core

Dies könnte eine einfache Frage sein, ich hoffe, dass es zumindest so ist.

Ich habe mit dem Release Candidate von ASP.NET Core begonnen und sehe, dass ein Großteil der Konfiguration aus der alten Datei web.config in strukturierte JSON-Dateien (sowie XML und andere Middleware) verschoben wurde dass du vielleicht selbst schreiben möchtest).
Die einzige Sache, die ich noch nicht herausgefunden habe, ist etwas, das im alten web.config-Ansatz so einfach war, dass einige der grundlegenden Komponenten Ihrer Website wie Cookies gesichert wurden.

Zuvor hatten wir secure, httpOnly und so weiter in web.config festgelegt, und bei der Implementierung einer Nice-kleinen Transformationsdatei würden die Werte für uns geändert und die neue Datei am Ende ausgespuckt. Nachdem wir die Runde ein wenig gelesen hatten, scheint web.config jetzt ziemlich tot zu sein. Wie können wir also die gleichen Ergebnisse erzielen?

Ich weiß, dass wir verschiedene Konfigurationsdateien laden können, je nachdem, ob bestimmte Variablen, wie z. B. die Umgebung, auf DEV, STAGING, PRODUCTION usw. gesetzt sind. Dies scheint jedoch nur das Ersetzen von Transformationen durch etwas zu sein, das eine Transformation für alle Absichten und Zwecke darstellt, außer wie es ist tatsächlich geladen?

Habe ich hier etwas verpasst oder habe ich es geschafft, mich in ein bisschen Chaos zu bringen?

9
Jak Hammond

Für ein allgemeines Cookie, das manuell in Ihrer Anwendung erstellt wird, legen Sie die Sicherheitsflags fest, wenn Sie es erstellen. Beispiel:

Response.Cookies.Append(
    "COOKIE_NAME",
    "COOKIE_VALUE",
    new CookieOptions()
    {
        Path = "/",
        HttpOnly = false,
        Secure = false
    }
);

Wenn Sie für HttpOnly den Wert true angeben, wird der clientseitige JS nicht auf den Cookie-Wert zugreifen. Wenn Sie Secure auf true setzen, wird der Cookie nur über HTTPS bereitgestellt/empfangen.

Wenn Sie der Antwort Cookies hinzufügen, werden keine Standardwerte angewendet, wie in dem Quellcode für die ResponseCookies-Klasse zu sehen ist.

Für die verschiedenen Middlewares, die ihre eigenen Cookies erstellen und verwenden (z. B. die Session-Middleware, die Sie in Ihrer Antwort erwähnt haben), verfügen sie möglicherweise über eigene Konfigurationsoptionen, mit denen diese Flags für die von ihnen selbst erstellten Cookies gesteuert werden. Dies macht jedoch keinen Unterschied Cookies, die Sie an anderer Stelle in Ihrer Anwendung erstellen.

13
Mark Hughes

Es ist eine alte Frage, aber ich habe diese Antwort nirgendwo gesehen.

Wie Sie das Verhalten von Cookies global konfigurieren, können Sie im Autostart vornehmen.

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
        options.HttpOnly = HttpOnlyPolicy.Always;
        options.Secure = CookieSecurePolicy.Always;
        // you can add more options here and they will be applied to all cookies (middleware and manually created cookies)
    });

    ...
}

Um dies so zu tun, dass Sie unterschiedliche Konfigurationen pro Umgebung haben, habe ich noch keinen Weg gefunden, es selbst zu tun.

2
André Sousa

Ok, habe herausgefunden, dass ich mich immer noch daran erinnern muss, dass die meisten Dinge in .NET5 jetzt aktiviert sind. Dazu gehören Dinge wie Session, in der Cookies jetzt leben, indem ich die docs durchlese und schließlich fand ich, was ich brauchte um Cookies zu aktivieren und zu konfigurieren.

0
Jak Hammond