1
Fork 0
mirror of https://github.com/Steffo99/unimore-bda-2.git synced 2024-11-21 23:44:23 +00:00
This commit is contained in:
Steffo 2023-02-28 21:31:19 +01:00 committed by GitHub
parent 7c79a3e476
commit 5d63c31a8e
Signed by: github
GPG key ID: 4AEE18F83AFDEB23

View file

@ -262,17 +262,20 @@ Per ostacolare attacchi [denial-of-service](https://en.wikipedia.org/wiki/Denial
Per la creazione effettiva del board, internamente vengono effettuate alcune operazioni: Per la creazione effettiva del board, internamente vengono effettuate alcune operazioni:
1. viene aperta una transazione attraverso il comando [`MULTI`] 1. viene inserito un lock ottimistico sulle chiavi utilizzate dal board con il comando [`WATCH`]
2. viene verificato che nessuna delle chiavi utilizzate dal board contengano già dati 2. viene verificato che nessuna delle precedenti chiavi contengano già dati con molteplici comandi [`GET`]
3. viene salvato l'ordinamento nella chiave `board:{name}:order` con il comando [`SET`] 3. viene aperta una transazione attraverso il comando [`MULTI`]
4. viene generata in modo crittograficamente sicuro una stringa detta ***token*** che viene archiviata nella chiave `board:{name}:token` con il comando [`SET`] 4. viene salvato l'ordinamento nella chiave `board:{name}:order` con il comando [`SET`]
5. viene eseguita la transazione attraverso il comando [`EXEC`] 5. viene generata in modo crittograficamente sicuro una stringa detta ***token*** che viene archiviata nella chiave `board:{name}:token` con il comando [`SET`]
6. se le chiavi lockate non sono state modificate nel frattempo, viene eseguita la transazione attraverso il comando [`EXEC`]
Terminata la creazione, l'user agent riceve una risposta `HTTP 201` contenente il token generato. Terminata la creazione, l'user agent riceve una risposta `HTTP 201` contenente il token generato.
![Diagramma di funzionamento della creazione di board](media/diagram-post-board.png) ![Diagramma di funzionamento della creazione di board](media/diagram-post-board.png)
[`WATCH`]: https://redis.io/commands/watch/
[`MULTI`]: https://redis.io/commands/multi/ [`MULTI`]: https://redis.io/commands/multi/
[`GET`]: https://redis.io/commands/get/
[`SET`]: https://redis.io/commands/set/ [`SET`]: https://redis.io/commands/set/
[`EXEC`]: https://redis.io/commands/exec/ [`EXEC`]: https://redis.io/commands/exec/