improve cookie system

This commit is contained in:
Laura Hausmann 2020-01-04 02:31:35 +01:00
parent 1c9dfcefea
commit 7cf43c654a
5 changed files with 25 additions and 39 deletions

View file

@ -3,6 +3,8 @@
<component name="ContentModelStore">
<e p="$USER_HOME$/Library/Caches/Rider2019.3/extResources" t="IncludeRecursive" />
<e p="$USER_HOME$/Library/Caches/Rider2019.3/resharper-host/local/Transient/ReSharperHost/v193/SolutionCaches/_c3stream.-879192168.00" t="ExcludeRecursive" />
<e p="$APPLICATION_CONFIG_DIR$/javascript/extLibs/http_kit.fontawesome.com_c1a632a160.js" t="IncludeRecursive" />
<e p="$APPLICATION_CONFIG_DIR$/javascript/extLibs/http_pro.fontawesome.com_releases_v5.11.2_css_all.css" t="IncludeRecursive" />
<e p="$PROJECT_DIR$" t="IncludeRecursive">
<e p=".gitignore" t="Include" />
<e p="appsettings.Development.json" t="Include" />

View file

@ -1,7 +1,6 @@
@page
@model ConferenceModel
@using System.Net
@using Microsoft.AspNetCore.Http
@using static ConferenceModel
@{
int tagFormat;
@ -21,18 +20,7 @@
return;
}
if (Request.Query.ContainsKey("bookmark") && Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
Response.Cookies.Append("bookmark", Request.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue});
Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + Request.Query["bookmark"]);
}
else if (!Request.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(Request.Cookies["bookmark"], "D", out _)) {
var guid = Guid.NewGuid().ToString();
Response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue});
Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + guid);
}
else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
Response.Redirect("/Conference?c=" + Request.Query["c"] + "&bookmark=" + Request.Cookies["bookmark"]);
}
c3stream.UpdateCookie(Request, Response, $"/Conference?c={Request.Query["c"]}&");
ViewData["Title"] = Request.Query["c"];
var wc = new WebClient();

View file

@ -1,20 +1,8 @@
@page
@using Microsoft.AspNetCore.Http
@model IndexModel
@{
ViewData["Title"] = "Home";
if (Request.Query.ContainsKey("bookmark") && Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
Response.Cookies.Append("bookmark", Request.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue});
Response.Redirect("/?bookmark=" + Request.Query["bookmark"]);
}
else if (!Request.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(Request.Cookies["bookmark"], "D", out _)) {
var guid = Guid.NewGuid().ToString();
Response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue});
Response.Redirect("/?bookmark=" + guid);
}
else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
Response.Redirect("/?bookmark=" + Request.Cookies["bookmark"]);
}
c3stream.UpdateCookie(Request, Response, $"/?");
}
<div style="text-align: center">

View file

@ -1,5 +1,4 @@
@page
@using Microsoft.AspNetCore.Http
@model InfoModel
@{
ViewData["Title"] = "Info";
@ -10,18 +9,7 @@
return;
}
if (Request.Query.ContainsKey("bookmark") && Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
Response.Cookies.Append("bookmark", Request.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue});
Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + Request.Query["bookmark"]);
}
else if (!Request.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(Request.Cookies["bookmark"], "D", out _)) {
var guid = Guid.NewGuid().ToString();
Response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue});
Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + guid);
}
else if (!Request.Query.ContainsKey("bookmark") || Request.Cookies["bookmark"] != Request.Query["bookmark"]) {
Response.Redirect("/Info?guid=" + Request.Query["guid"] + "&bookmark=" + Request.Cookies["bookmark"]);
}
c3stream.UpdateCookie(Request, Response, $"/Info?guid={Request.Query["guid"]}&");
ConferenceModel.ReadEventMetadata();
var talk = ConferenceModel.EventMetadata.FirstOrDefault(p => p.Guid == Request.Query["guid"]);

View file

@ -1,6 +1,8 @@
using System;
using System.IO;
using c3stream.Pages;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
namespace c3stream {
@ -20,6 +22,24 @@ namespace c3stream {
CreateHostBuilder(args).Build().Run();
}
public static void UpdateCookie(HttpRequest resquest, HttpResponse response, string redirectUri) {
//if new bookmark is in uri
if (resquest.Query.ContainsKey("bookmark") && resquest.Cookies["bookmark"] != resquest.Query["bookmark"]) {
response.Cookies.Append("bookmark", resquest.Query["bookmark"], new CookieOptions {Expires = DateTimeOffset.MaxValue});
response.Redirect(redirectUri + "bookmark=" + resquest.Query["bookmark"]);
}
//if no cookie exists or cookie is invalid
else if (!resquest.Cookies.ContainsKey("bookmark") || !Guid.TryParseExact(resquest.Cookies["bookmark"], "D", out _)) {
var guid = Guid.NewGuid().ToString();
response.Cookies.Append("bookmark", guid, new CookieOptions {Expires = DateTimeOffset.MaxValue});
response.Redirect(redirectUri + "bookmark=" + guid);
}
//redir to cookie
else if (!resquest.Query.ContainsKey("bookmark")) {
response.Redirect(redirectUri + "bookmark=" + resquest.Cookies["bookmark"]);
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}