A není řešení použít tam nějakého externího poskytovatele identity? MojeID / Google / Facebook / ...?
Já před lety řešil podobný problém. Psal jsem systém, kde si uživatel vybírá fotografie z focení k následné úpravě. A chtěl jsem obdobný scénář: Uživateli prostě jen pošlu odkaz, kde fotky vybírat, uživatelé si jej mohou přeposílat a přitom vím, kdo vybírá - jestli fotku hodnotil člověk, co na ní je, nebo někdo jiný ze skupiny. Na druhou stranu nechci, aby se bylo možné dostat se na jiné album (uhodnout jeho adresu).
Důležitým požadavkem byla minimální složitost, jak pro uživatele (nepotřebuje se registrovat), tak pro mne (žádné ruční přidělování práv, kdo může co vidět, prostě pošlu odkaz a je to).
Navrhl jsem to následovně:
- Album má jako identifikátor 32-znakový náhodný řetězec, který je v URL. Stejně tak fotky mají svoje náhodná id. Tedy dají se posílat odkazy na album, fotku, ale musím to id znát (dostat), není reálné ho uhodnout.
- Identifikace je pomocí identity z Facebooku. Poprvé musí uživatel potvrdit předání informací, při dalších návštěvách tam jde hned.
- Pro uživatele mám vytvořený lokálně záznam, kde jsou jeho data nacachována, abych mohl ukazovat ostatním uživatelům, kdo jak hodnotil.
- Mohu nastavit uživateli příznak, že může do administrace - tak z něho udělám administrátora (jsem zatím jediný, takže jsem to nastavoval prostě v SQL).
Za těch pár let s tím mám dobré zkušenosti. FB má skoro každý (jen v jednom případě dotyčný FB neměl) a když by to byl problém, mohl bych jednoduše přidat dalšího providera. Pro mě i pro uživatele je používání velmi jednoduché. Není to úplně super bezpečné, protože věřím externí autoritě, ale pro daný účel stačí.