Hallo,
ich arbeite grade an einem Streaming Portal in dem ich gerne ein Ticketsystem implementieren würde. Jeder der den Stream schauen möchte muss erstmal ein Ticket erwerben.
Bei kauf des Tickets würde ich in der Datenbank einen neuen Datensatz mit folgender Struktur anlegen und dem User eine Mail mit Rechnung und einem Link zusenden: https://url/stream/guid
public class Ticket
{
public int TicketId { get; set; }
public int StreamId { get; set; }
public string Guid { get; set; }
public string Mail { get; set; }
public long Create { get; set; }
public long Lock { get; set; }
}
Anhang der Guid kann ich mir den angelegten Datensatz aus der DB holen und auch alle anderen Infos um dem User den Stream anzeigen.
Damit allein wäre es möglich das der User diesen Link an seine Freunde weiter gibt und alle über nur ein Ticket den Stream anschauen können. Dies möchte ich natürlich verhindern und suche dafür ein geeignetes Konzept.
Ich möchte dem User dennoch ermöglichen das er den Browser oder den Client wechseln kann, Cookies scheiden damit aus und auch das löschen des Datensatzes aus der DB.
Ich habe mir überlegt den Link nur eine gewisse Zeit zu sperren z.B. 10 Sekunden. Dafür würde ich in Lock die aktuelle Zeit als Tick speichern. Solange der User auf der Website ist würde ein JavaScript alle 5 Sekunden dem Server melden das er den Stream
noch offen hat und damit die Zeit in Lock neu setzen.
Würde innerhalb dieser Zeitspanne jemand den Link aufrufen, würde ich eine entsprechende Fehlermeldung anzeigen.
Habt ihr vielleicht bedenken oder eine bessere Idee wie man so etwas umsetzt
Gruß Thomas
Github