Den officiella Doconut-funktionskatalog listar webbläsarutskrift och PDF‑export som visarfunktioner. Att kontrollera åtkomst till dem kräver fortfarande två separata beslut: om Doconut visar den relevanta åtgärden och om värdapplikationen auktoriserar den operationen för den aktuella användaren och dokumentet.

För de exakta kontroller som stöds av din installerade version, börja med Doconut-dokumentationen och de paketera exemplen som finns på den officiella Doconut-nedladdningssidan. Kopiera inte konfigurationsnycklar eller källkod från en orelaterad version eller en overifierad artikel.
1. Definiera utskriftspolicyn först
Skriv ner vem som får skriva ut och under vilka villkor innan du ändrar verktygsfältet. En användbar policy svarar på frågor som:
- Är utskrift tillåten för alla visare, endast vissa roller eller specifika dokument?
- Beror beslutet på hyresgäst, ärendestatus, dokumentklassificering eller utgång?
- Krävs ett vattenmärke på utskriftsresultatet?
- Ska utskrifts‑händelser auditera?
- Kan en användare skriva ut en äldre dokumentrevision?
- Vad ska hända när behörigheten ändras medan förhandsgranskningen är öppen?
Undvik ett enda globalt Boolean‑värde när den verkliga regeln är kontextuell. Modellera utskrift som en egen operation så att den kan auktoriseras oberoende av visning och nedladdning.
2. Separera UI‑tillstånd från auktorisering
Värdsidan kan besluta om den ska visa en utskriftskontroll efter att den mottagit ett applikationsägt behörighetsresultat. Det förbättrar tydligheten för användare som inte kan skriva ut.
Att dölja en kontroll är dock inte en auktoriseringsgräns. En användare kan fortfarande anropa en känd endpoint direkt, återspela en tidigare begäran eller initiera webbläsarutskrift på synligt innehåll. Varje server‑route som producerar utskriftsbart resultat måste verkställa samma policy.
Använd distinkta tillstånd i UI‑tänket:
| Tillstånd | Visarens beteende | Serverns beteende |
|---|---|---|
| Utskrift tillåten | Visa den stödjade utskriftsåtgärden | Auktorisera och skapa den begärda utskriften |
| Utskrift nekad | Dölj eller inaktivera åtgärden med en tydlig förklaring | Returnera ett förbjudet svar |
| Policy okänd | Behåll åtgärden otillgänglig medan behörigheten laddas | Skapa inte någon utskrift |
| Sessionen har gått ut | Be användaren att autentisera på nytt | Avvisa den föråldrade begäran |
3. Skydda utskrifts‑endpointen
Skydda den applikationsoperation som initierar utskrift eller returnerar utskriftsbart resultat. Auktoriseringsbeslutet bör ta hänsyn till hyresgästmedlemskap, ägande, klassificering, arbetsflödesstatus och dokumentrevision. Lös dokumentet på servern istället för att acceptera en klient‑tillhandahållen sökväg eller lagrings‑URL.
Om din applikation skriver ut via en visarspecifik route istället för att skapa en PDF, tillämpa samma auktorisering innan du anropar den rutten.
4. Konfigurera den installerade visarversionen
När serverregeln finns, konfigurera Doconut‑UI:n med exakt det alternativ som dokumenteras för paketet och exempel‑filerna som levereras med din version. De Doconut live‑demoer låter dig observera stödjda visarbeteenden innan du förbinder dig till en specifik integration. Verifiera:
- Var alternativet är inställt: serverkonfiguration, view‑model eller klientinitialisering.
- Om det döljer ett verktygsfältselement, inaktiverar en åtgärd eller påverkar genererad utskrift.
- Om värdet gäller per visarinstans eller globalt.
- Om utskrift och export är separata operationer.
- Om en uppdatering ändrade alternativets namn eller standardvärde.
Behandla det officiella exemplet som sanningskällan. Ett plausibelt namn på en egenskap är inte tillräckligt bevis för att den installerade visaren känner igen den.
5. Hantera webbläsarutskrifter ärligt
En visningsinställning kan inte garantera att synlig information aldrig skrivs ut eller fångas. Webbläsaren kan skriva ut värdsidan, och användare kan ta skärmdumpar eller fotografier. Tangentbordsavlyssning och utskrifts‑specifik CSS kan förbättra den förväntade upplevelsen, men de är kringgående åtgärder på klientsidan.
Om värdsidan inte bör producera en användbar papperskopia kan din applikation använda sin egen utskrifts‑specifika presentation för att ersätta förhandsgranskningen med ett förklarande meddelande. Håll detta värdsidesbeteende separat från Doconut's dokumenterade visningskontroller.
Beskriv inte detta som dokumentskydd. Använd server‑side rendering, auktorisation, kontrollerade exporteringar och synliga vattenstämplar när din riskbedömning kräver starkare avskräckning.
6. Håll nedladdning, export och utskrift separata
Användare och utvecklare behandlar ofta dessa som en enda “skrivskyddad” knapp, men de representerar olika dataflöden:
- View visar renderat innehåll.
- Download returnerar källan eller en annan lagrad fil.
- Export skapar ett derivatformat.
- Print producerar en utskrivbar representation eller initierar webbläsarutskrift.
Auktorisera varje operation explicit. En användare som inte kan skriva ut kan fortfarande tillåtas att ladda ner, eller tvärtom. Ditt verktygsfält bör spegla serverns beslut snarare än att definiera dem.
7. Lägg till användbara audit‑händelser
Om utskrift är känslig, registrera beslutet utan att logga själva dokumentet. En händelse kan inkludera användaren, hyresgästen, dokumentidentifieraren, revisionen, policyresultatet, tidsstämpeln och korrelations‑ID.
Registrera både lyckade och nekade försök. Om utskriftstjänsten skapar en temporär fil, registrera även om dess rensning slutfördes. Håll filsökvägar, token, dokumenttitlar som innehåller personuppgifter och utskrivbart innehåll utanför rutinloggar.
8. Testa bortom den saknade knappen
Verktygsfältet är bara det första påståendet. Lägg till tester för hela operationen:
Auktoriserad användare
- Den avsedda utskriftsåtgärden är synlig.
- Utskriftsbegäran lyckas för ett tillåtet dokument.
- Rätt revision används.
- Nödvändiga märkningar visas i genererat resultat.
- Audit‑händelsen registrerar framgång.
Oauktoriserad användare
- Åtgärden saknas eller är inaktiverad.
- En direkt begäran till utskrifts‑endpointen returnerar ett förbjudet svar.
- Ändring av dokument‑ID kringgår inte regeln.
- En URL kopierad från en auktoriserad session kan inte återanvändas på fel sätt.
- Nekandet avslöjar inte om en annan hyresgäst äger dokumentet.
Tillståndsförändringar
- Behörighet som återkallas under en session verkställs vid nästa utskriftsbegäran.
- En utgången session kan inte skriva ut.
- Ett raderat eller ersatt dokument ger ett kontrollerat fel.
- Tillfälligt utskriftsresultat följer den konfigurerade lagringsregeln.
Webbläsar‑automation kan verifiera det synliga tillståndet och svarskoden. Integrationstester bör verifiera policyutvärdering och dokumentnivå‑auktorisation oberoende.
Vanliga frågor
Döljer man utskriftsknappen stoppar det webbläsarens utskriftsgenväg?
Nej. Det tar bort en avsedd visningsåtgärd endast om den installerade visaren implementerar det beteendet. Webbläsarutskrift och skärmfångst kräver separat hänsyn och kan inte helt förhindras med kod på klientsidan.
Ska utskriftsbehörighet inkluderas i visnings‑URL:en?
Föredra ett server‑side auktorisationsbeslut kopplat till den autentiserade användaren, dokumentet och operationen. Om en temporär referens bär behörigheter, begränsa den snävt, skydda den från loggar och hänvisare, och validera känsliga åtgärder igen.
Är det tillräckligt att inaktivera utskrift för konfidentiella dokument?
Nej. Det är en kontroll för användbarhet eller avskräckning. Konfidentiella arbetsflöden kräver också lagringsskydd, objekt‑nivå auktorisation, kontrollerade exporteringar, lagringsregler, övervakning och en accepterad restriskmodell.
Slutsats
En pålitlig Doconut‑utskriftskontrollimplementation börjar på servern och slutar i gränssnittet. Definera policyn, skydda operationen, konfigurera endast det dokumenterade alternativet för din installerade visare, förklara resultatet för användarna och testa direkta begäranden samt verktygsfältets synlighet. Använd den officiella funktionssidan, dokumentationen, nedladdningarna och demo‑erna som implementationskällor istället för att återskapa produktkod i artikeln.