Jak już wspomniałeś zapisujesz w oddzielnej tabeli użytkowników a w oddzielnej zadania. Tabela z użytkownikami powinna mieć kolumnę ID z unikalnymi wartościami i zaznaczoną opcją auto increment.
I teraz tak po kolei, bo pytałeś skąd znać ID usera:
- User wpisuje swoje dane do pola login i hasło i klika zaloguj wykonuje się request na serwer
- Po requeście serwer odpowiada i w response wysyła ID użytkownika, który się zalogował
- ID użytkownika zapisujesz u niego na maszynie w postaci localStorage bądź w ciasteczku (preferuje 1 podejście)
- Gdy już masz ID usera w localStorage przenosisz go do strony z jego zadaniami
- Pobierasz ID z localStorage i robisz calla do backendu przesyłając jego ID
- W kodzie wykonywanym na serwie podstawiasz do zapytania przesłane ID (PAMIĘTAJ o SQL injection)
Również co może pójść źle to to, że zapis do localStorage nie jest asynchroniczny i to czasem utrudnia zadanie jeśli wpadniesz w jakieś kłopoty, że zapisałeś do localStorage a nie możesz pobrać tej wartości to poczytaj o np. localForage od mozilli albo coś w ten deseń.
Jeszcze pozostaje kwestia, że zapis ID usera w localStorage może być niekoniecznie najlepszym rozwiązaniem bo łatwo sprawdzić swoje ID, lepiej jest jeszcze na serwie zapisać ID jako token np. JWT i w response po zalogowaniu wysłać właśnie owy token a potem w requeście do pobrania listy wysłać token, który najpierw będzie odszyfrowany przez backend, potem spreparowane aby uniknąć ataku SQL injection a dopiero potem podstawione do zapytania.