ArtikelVibe coding

Privata bilagor i appen: konto, länk och utgångstid

Ett privat ärende behöver också en tydlig regel för bilagan. Beställ kontoåtkomst eller en avsiktligt delbar länk och prova vem som kan hämta filen när adressen redan är känd.

Publicerad · Senast granskad · 10 min läsning

En vit träram med en öppning står framför svarta skivor; en röd list löper diagonalt förbi ett grönt block.
Beställ filens egen hämtningsväg och prova vem som kan passera den med en kopierad adress.
Beställ filens läsregel

Välj om en bilaga bara ska kunna hämtas av rätt konto eller om den ska kunna delas med en tidsbegränsad länk. Alla filer och konton nedan är påhittade; proven är förslag, inte resultat från en testad Lovable-app.

Posten är privat – men hur hämtas bilagan?

Du bygger en app för ärenden. Konto A får öppna ärende A och dess bilaga ”lokal-a.txt”. Konto B ska bara få läsa sitt eget ärende. Listan ser rätt ut när du byter konto: B ser inget av A:s ärende. Men vad händer om B öppnar den kopierade adressen till själva bilagan? Det är den frågan du behöver lägga till i beställningen.

En postadress öppnar en vy i appen. En filadress hämtar det lagrade innehållet. I Direktlänkar i appen handlar provet om rätt post efter inloggning. Här följer du bilagan hela vägen till hämtningen, även när någon redan har dess adress.

Lovables inbyggda backend innehåller databas, autentisering och fillagring. Det ger byggdelarna till flödet, men dokumentationen visar inte vilka regler just din app har. Lagringsdokumentationen skiljer privata lagringsutrymmen med behörighetsregler från publika där filadressen ger åtkomst. Be därför modellen beskriva både vem som får läsa ärendet och hur bilagan lämnas ut.

Välj kontoåtkomst eller en tidsbegränsad länk

Supabases dokumentation om privata filer beskriver två hämtningsvägar: autentiserad nedladdning där användarens rättigheter bedöms, och en signerad URL som fungerar under begränsad tid. Supabase är implementationsexemplet här. Det är inte ett besked om hur varje Lovable-projekt fungerar.

Ditt beslutBeteendet du beställerAvvägning
KontoåtkomstRätt konto krävs vid varje ny hämtning. Annat konto och utloggad besökare nekas även med kopierad filadress.Mottagaren behöver konto och rättighet. Beställ ingen delningsfunktion som gör länkinnehav tillräckligt.
Tidsbegränsad delningslänkEn behörig användare får skapa en länk. Den som har länken får hämta filen tills tiden går ut.Mottagaren behöver inte vara samma konto. Vidarebefordran under giltighetstiden är ett accepterat beteende.

Välj kontoåtkomst om bilagan ska stanna inom kontots rättigheter. Välj delningslänk när du avsiktligt vill låta exempelvis en extern granskare hämta en låtsasbilaga utan konto. Om du behöver båda ska de vara två tydligt skilda handlingar: ”Hämta bilaga” och ”Skapa delningslänk”. En otydlig knapp märkt ”Kopiera länk” gör beslutet svårt att kontrollera.

En signerad URL kan alltså vara rätt byggd även om den fungerar utloggad. Supabase beskriver den som en delbar, tidsbegränsad adress. Däremot är samma resultat ett fel mot vår beställning av kontoåtkomst. Börja med beslutet, så att provet mäter det du faktiskt vill ha.

Kopiera beställningen och välj delningsbeslut

Beställningen nedan väljer kontoåtkomst som utgångspunkt. Anpassa ärendenas namn till din app och behåll kraven på filhämtningen. Välj därefter om alternativstycket ska ersätta delningsförbudet. Fem minuter är ett föreslaget provvärde som du själv väljer, inte en uppgift om en standardinställning.

Kopiera: privata bilagor med kontoåtkomst

Lägg till privata bilagor till appens ärenden. Använd två testkonton, A och B, med varsitt ärende och varsin ofarlig textfil. Konto A ska få läsa A:s ärende och bilaga. Konto B ska bara få läsa B:s. Behörighet till en post och behörighet till filen ska kontrolleras var för sig på servern.

Jag väljer kontoåtkomst. Varje ny hämtning av bilagans innehåll ska kräva ett inloggat konto med aktuell läsrätt till rätt ärende och fil. Den kopierade filadressen får inte ensam ge åtkomst från konto B eller en utloggad webbläsare. Skapa ingen publik filadress eller delbar signerad länk som går runt detta krav. Att bara dölja knappen räcker inte.

När rätten att läsa ärendet tas bort ska nästa nya hämtning nekas. Visa ”Bilagan kan inte öppnas” utan filinnehåll när åtkomst saknas. Beskriv hur jag kan få fram den verkliga hämtningsadressen för ett manuellt prov, och hur jag provar den med annat konto och utloggad webbläsare. Använd inga verkliga privata filer.

Redovisa vilken lagring och hämtningsväg appen använder, var filåtkomsten kontrolleras och om någon tillfällig URL ändå skapas. Beskriv i så fall om den går att vidarebefordra och varför lösningen uppfyller mitt val. Ändra inte andra funktioner. Ge mig steg och förväntat resultat för varje rad i provmatrisen.

Alternativ: ersätt delningsförbudet om du vill dela

Jag tillåter dessutom avsiktlig delning. Lägg en separat knapp ”Skapa delningslänk” som bara ett konto med aktuell läsrätt får använda. Länken ska fungera i fem minuter från skapandet och får under den tiden fungera utloggad och efter vidarebefordran. Visa när den slutar gälla. Efter utgångstiden ska en ny hämtning med samma länk nekas. Skapa inte automatiskt en ny länk när den gamla öppnas. När läsrätten har tagits bort får kontot inte skapa fler länkar. Redovisa separat vad som händer med redan skapade länkar; lova inte att utloggning eller ändrad roll återkallar dem.

Du behöver inga databasfrågor för att göra beställningen. Om modellen bara svarar ”lagringen är privat”, be den visa hur den valda hämtningsvägen uppfyller kraven. Fortsätt med Behörigheter i Lovable om du behöver reda ut vem som ska få läsa vilka poster innan bilagorna läggs till.

Prova med två konton och ofarliga filer

Skapa filen ”lokal-a.txt” med texten ”LÅTSASFIL A – ingen privat information” och ”lokal-b.txt” med motsvarande text för B. Ladda upp dem i respektive testärende. Använd separata webbläsarprofiler för konto A och B samt ett privat fönster som du kontrollerat är utloggat. Då kan du se vilket konto som gör varje hämtning.

Öppna först A:s bilaga som A. Be byggverktyget visa hur du kopierar adressen som faktiskt hämtar filinnehållet; adressen till ärendesidan räcker inte. Lovables lagringsvy kan kopiera en tillfällig signerad URL för en privat fil. Blanda inte ihop den med din apps egen hämtningsväg. Anteckna vilket slags adress du provar.

Prov med A:s bilagaKontoåtkomst: förväntatDelningsalternativ: förväntat
1. Hämta som ägaren A.A:s textfil hämtas och innehåller markeringen A.Samma resultat via appens ordinarie hämtning.
2. Öppna A:s kopierade vanliga hämtningsadress som B.Inget filinnehåll lämnas ut.Inget filinnehåll via den kontobundna adressen. Prova delningslänken separat i rad 4.
3. Öppna den vanliga hämtningsadressen utloggad.Inget filinnehåll lämnas ut utan rätt konto.Samma krav för ordinarie hämtning.
4. Försök skapa en delningslänk och vidarebefordra den till B och det utloggade fönstret.Ingen sådan delningsfunktion ska finnas.A får skapa länken. B och utloggad mottagare får läsa A:s fil före utgången. B får inte skapa en ny länk till A:s fil.
5. Öppna samma delningslänk med en ny begäran efter den visade utgångstiden.Inte tillämpligt; ingen delningslänk beställd.Inget filinnehåll lämnas ut och ingen ersättningslänk skapas automatiskt.
6. Ta bort A:s läsrätt. Försök hämta på nytt och skapa en ny länk.Den nya hämtningen nekas.Ordinarie hämtning och utfärdande av nya länkar nekas. Prova en redan utfärdad länk separat och jämför med det redovisade beteendet.

Skriv appversion, konto, adressens typ, tidpunkt, förväntat och faktiskt resultat för varje rad. Spara inte själva delningslänken i ett öppet felärende. En användbar felrapport är ”rad 2: konto B kunde hämta markeringen A via A:s ordinarie filadress”. Be om rättning av just det flödet och kör matrisen igen efter ändringen.

Prova utgångstid med en ny begäran, inte genom att titta på en redan öppen fil. Om webbläsaren visar en sparad kopia behöver du skilja det från en ny hämtning från servern. Dessa användarprov visar det synliga beteendet; de ersätter inte en granskning av serverreglerna. För kontroll av själva uppladdningen finns Filuppladdning i AI-kod.

Utgångstid stoppar inte en sparad kopia

Skilj tre händelser åt: att skapa nästa länk, att använda en redan skapad länk och att öppna en fil som redan laddats ned. När ett konto förlorar läsrätt beställer du stopp för nya hämtningar och nya länkar. Det säger inte i sig vad som händer med en länk som utfärdades tidigare.

Supabases dokumentation om URL-signering beskriver en separat signeringsnyckel för lagringslänkar. Ändringar i inloggningens signeringsnycklar gör inte dessa länkar ogiltiga. Källan beskriver också särskild återkallning och att cache kan behöva hanteras. Dra därför inte slutsatsen att ”Logga ut” eller en borttagen roll återkallar varje redan utfärdad länk.

Om ditt krav är att en tidigare länk ska sluta fungera när rättigheten tas bort, skriv det som ett eget krav och begär ett eget prov. Acceptera inte fem minuters giltighet som svar på ett krav om omedelbart stopp. Välj i stället en hämtningsmodell som kan uppfylla ditt beslut, eller ändra beslutet uttryckligen.

En nedladdad fil är dessutom en separat kopia. Att servern slutar lämna ut bilagan raderar inte kopian från mottagarens enhet. Använd därför låtsasfiler under arbetet och godkänn läsmodellen innan du lägger in privata bilagor.

FAQ

Är bilagan privat om ärendet kräver inloggning?

Du behöver också kontrollera hur själva filen hämtas. Prova den faktiska hämtningsadressen med ett annat konto och en utloggad webbläsare enligt den läsmodell du har valt.

Kan en signerad länk fungera utan konto?

Ja, en tidsbegränsad signerad länk kan avsiktligt ge åtkomst till den som har länken. I delningsalternativet får den vidarebefordras under giltighetstiden.

Slutar delningslänken fungera när jag loggar ut?

Räkna inte med det. Beställ och prova separat vad som händer med redan utfärdade länkar vid utloggning eller ändrad rättighet.

Försvinner en nedladdad fil när länken går ut?

Nej, en fil som mottagaren redan har laddat ned är en separat kopia. Utgångstiden styr fortsatt åtkomst via länken.

Källor