mirror of https://github.com/vapor/docs.git
Compare commits
2 Commits
07d0e7a823
...
f492970e62
| Author | SHA1 | Date |
|---|---|---|
|
|
f492970e62 | |
|
|
bf81c16fca |
|
|
@ -57,6 +57,9 @@ La consola debería aparecer en la parte inferior de la ventana de Xcode.
|
|||
|
||||
En Linux y otros sistemas operativos (e inclusive en macOS si no quieres usar Xcode) puedes editar el proyecto en el editor que prefieras, por ejemplo Vim o VSCode. Visita [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md) para detalles actualizados sobre cómo configurar otros IDEs.
|
||||
|
||||
!!! tip "Consejo"
|
||||
Si utilizas VSCode como editor de código, recomendamos instalar la extensión oficial de Vapor: [Vapor para VS Code](https://marketplace.visualstudio.com/items?itemName=Vapor.vapor-vscode).
|
||||
|
||||
Para construir y ejecutar tu proyecto, ejecuta en el Terminal:
|
||||
|
||||
```sh
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ Se non hai ancora installato Swift o la Toolbox Vapor, segui la guida di install
|
|||
- [Installazione → macOS](../install/macos.md)
|
||||
- [Installazione → Linux](../install/linux.md)
|
||||
|
||||
!!! tip "Suggerimento"
|
||||
Il template usato dalla Vapor Toolbox richiede Swift 6.0 o superiore
|
||||
|
||||
## Nuovo Progetto
|
||||
|
||||
Il primo passo è creare un nuovo progetto Vapor sul tuo computer. Apri il terminale e utilizza il comando `new` della Toolbox. Questo creerà una nuova cartella nella directory corrente contenente il progetto.
|
||||
|
|
@ -15,10 +18,13 @@ Il primo passo è creare un nuovo progetto Vapor sul tuo computer. Apri il termi
|
|||
vapor new hello -n
|
||||
```
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
L'opzione `-n` creerà un progetto con il minimo indispensabile, rispondendo automaticamente no a tutte le domande.
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
Puoi anche ottenere il template più recente da GitHub senza la Vapor Toolbox clonando la [repository del template](https://github.com/vapor/template-bare)
|
||||
|
||||
!!! tip "Suggerimento"
|
||||
Vapor e il template ora utilizzano `async`/`await` di default.
|
||||
Se non puoi aggiornare a macOS 12 e/o hai bisogno di continuare ad utilizzare gli `EventLoopFuture`,
|
||||
utilizza l'opzione `--branch macos10-15`.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Puoi creare tag Leaf personalizzati usando il protocollo [`LeafTag`](https://api
|
|||
|
||||
Per mostrare come funziona, diamo un'occhiata alla creazione di un tag personalizzato `#now` che stampa l'attuale marca temporale. Il tag supporterà anche un singolo parametro opzionale per specificare il formato della data.
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
Se il tuo tag personalizzato renderizza HTML dovresti conformare il tuo tag personalizzato a `UnsafeUnescapedLeafTag` così che l'HTML non sia "escaped". Ricorda di controllare o ripulire ogni input dell'utente.
|
||||
|
||||
## `LeafTag`
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ Hello, #(name)!
|
|||
```
|
||||
|
||||
!!! tip "Consejo"
|
||||
Si estás usando VSCode como tu editor de código, te recomendamos instalar la extensión de Vapor para habilitar el resaltado de sintaxis: [Vapor for VS Code](https://marketplace.visualstudio.com/items?itemName=Vapor.vapor-vscode).
|
||||
Si estás usando VSCode como tu editor de código, te recomendamos instalar la extensión de Vapor para habilitar el resaltado de sintaxis: [Vapor para VS Code](https://marketplace.visualstudio.com/items?itemName=Vapor.vapor-vscode).
|
||||
|
||||
Luego, registra una ruta (generalmente en `routes.swift` o en un controlador) para renderizar la vista.
|
||||
|
||||
|
|
|
|||
|
|
@ -41,10 +41,10 @@ app.views.use(.leaf)
|
|||
|
||||
Questo dice a Vapor di usare `LeafRenderer` quando chiami `req.view` nel tuo codice.
|
||||
|
||||
!!! note
|
||||
!!! note "Nota"
|
||||
Leaf ha una cache interna per renderizzare le pagine. Quando l'ambiente di `Application` è impostato su `.development` questa cache è disabilitata, così che i cambiamenti ai template abbiano effetto immediatamente. In `.production` e tutti gli altri ambienti la cache è abilitata di default; qualsiasi cambiamento fatto ai template non avrà effetto finché l'applicazione non viene riavviata.
|
||||
|
||||
!!! warning
|
||||
!!! warning "Attenzione"
|
||||
Per fare in modo che Leaf trovi i template quando gira su Xcode, devi impostare la [directory di lavoro personalizzata](../getting-started/xcode.md#custom-working-directory) per il tuo ambiente di lavoro Xcode.
|
||||
## Struttura della Cartella
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ Adesso che Leaf è configurato, renderizziamo il tuo primo template. Dentro la c
|
|||
Hello, #(name)!
|
||||
```
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
Se usi VSCode come editor di testo, raccomandiamo di installare l'estensione di Vapor per abilitare l'evidenziazione della sintassi: [Vapor for VS Code](https://marketplace.visualstudio.com/items?itemName=Vapor.vapor-vscode).
|
||||
|
||||
Quindi, registra una route (di solito fatto in `routes.swift` o un controller) per renderizzare la view.
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ Il tag `#unsafeHTML` agisce come un tag di variabile - p.es. `#(variable)`. Per
|
|||
The time is #unsafeHTML(styledTitle)
|
||||
```
|
||||
|
||||
!!! note
|
||||
!!! note "Nota"
|
||||
Dovresti fare attenzione quando usi questo tag per assicurarti che la variabile che gli fornisci non esponga i tuoi utenti a un attacco XSS.
|
||||
|
||||
#### `#dumpContext`
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Questa libreria è un'integrazione tra Vapor e [**RediStack**](https://github.com/swift-server/RediStack), che è il driver sottostante che comunica con Redis.
|
||||
|
||||
!!! note
|
||||
!!! note "Nota"
|
||||
La maggior parte delle funzionalità di Redis sono fornite da **RediStack**.
|
||||
Raccomandiamo fortemente di acquisire familiarità con la sua documentazione.
|
||||
|
||||
|
|
@ -75,14 +75,14 @@ Questo è l'indice del database che intendi selezionare quando ogni connessione
|
|||
|
||||
Questo ti evita di dover mandare il comando `SELECT` a Redis da te.
|
||||
|
||||
!!! warning
|
||||
!!! warning "Attenzione"
|
||||
La selezione del database non è mantenuta. Stai attento quando mandi il comando `SELECT` da te.
|
||||
|
||||
### Opzioni del Pool di Connessioni
|
||||
|
||||
> Documentazione dell'API: [`RedisConfiguration.PoolOptions`](https://api.vapor.codes/redis/documentation/redis/redisconfiguration/pooloptions)
|
||||
|
||||
!!! note
|
||||
!!! note "Nota"
|
||||
Solo le opzioni cambiate più comunemente sono evidenziate qui. Per tutte le altre opzioni, fai riferimento alla documentazione dell'API.
|
||||
|
||||
#### minimumConnectionCount
|
||||
|
|
@ -97,7 +97,7 @@ Questa è conosciuta come connessione "cold start", e ha dell'overhead rispetto
|
|||
|
||||
Quest'opzione determina il comportamento di come il numero massimo di connessioni è mantenuto.
|
||||
|
||||
!!! seealso
|
||||
!!! seealso "Guarda anche"
|
||||
Fai riferimento all'API `RedisConnectionPoolSize` per familiarizzare con le opzioni disponibili.
|
||||
|
||||
## Inviare un Comando
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ Questo protocollo richiede che implementi il metodo `authenticate(basic:for:)`,
|
|||
|
||||
In questo autenticatore di prova, il nome utente e la password vengono verificati rispetto ai valori codificati. In un autenticatore reale, potresti voler effettuare un controllo su un database o su un'API esterna, per questo motivo il metodo `authenticate` consente di restituire una future.
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
Le password non devono mai essere memorizzate in un database in chiaro. Utilizzate sempre gli hash delle password per il confronto.
|
||||
|
||||
Se i parametri di autenticazione sono corretti, in questo caso corrispondono ai valori codificati, viene effettuato l'accesso a uno `User` di nome Vapor. Se i parametri di autenticazione non corrispondono, non viene registrato alcun utente, il che significa che l'autenticazione è fallita.
|
||||
|
|
@ -173,7 +173,7 @@ Questo protocollo richiede l'implementazione di `authenticate(bearer:for:)` che
|
|||
|
||||
In questo autenticatore di prova, il token viene testato rispetto a un valore codificato. In un vero autenticatore, potresti voler verificare il token confrontandolo con un database o usando misure crittografiche, come si fa con JWT. Ecco perché il metodo `authenticate` consente di restituire una future.
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
Quando si implementa la verifica dei token, è importante considerare la scalabilità orizzontale. Se l'applicazione deve gestire molti utenti contemporaneamente, l'autenticazione può essere un potenziale collo di bottiglia. Considera il modo in cui il tuo progetto scalerà su più istanze dell'applicazione in esecuzione contemporaneamente.
|
||||
|
||||
Se i parametri di autenticazione sono corretti, e in questo caso corrispondono al valore codificato, viene effettuato l'accesso a un `Utente` di nome Vapor. Se i parametri di autenticazione non corrispondono, non viene registrato alcun utente, il che significa che l'autenticazione è fallita.
|
||||
|
|
@ -328,7 +328,7 @@ Non dimenticare di aggiungere la migrazione a `app.migrations`.
|
|||
app.migrations.add(User.Migration())
|
||||
```
|
||||
|
||||
!!! tip
|
||||
!!! tip "Suggerimento"
|
||||
Poiché gli indirizzi email non sono sensibili alle maiuscole e alle minuscole, puoi aggiungere un [`Middleware`](../fluent/model.md#lifecycle) che coercizzi l'indirizzo email in minuscolo prima di salvarlo nella base dati. Tieni presente, però, che `ModelAuthenticatable` usa un confronto sensibile alle maiuscole e alle minuscole, quindi se fai questo devi assicurarti che l'input dell'utente sia tutto minuscolo, o con la coercizione delle maiuscole nel client o con un autenticatore personalizzato.
|
||||
|
||||
La prima cosa di cui hai bisogno è un endpoint per creare nuovi utenti. Useremo `POST /users`. Crea una struttura [Content](../basics/content.md) che rappresenti i dati che questo endpoint si aspetta.
|
||||
|
|
@ -749,7 +749,7 @@ Questi middleware svolgono le seguenti funzioni:
|
|||
* Il middleware delle sessioni prende il cookie di sessione fornito nella richiesta e lo converte in una sessione.
|
||||
* l'autenticatore di sessione prende la sessione e verifica se esiste un utente autenticato per quella sessione. In caso affermativo, il middleware autentica la richiesta. Nella risposta, l'autenticatore di sessione vede se la richiesta ha un utente autenticato e lo salva nella sessione, in modo che sia autenticato nella richiesta successiva.
|
||||
|
||||
!!! note
|
||||
!!! note "Nota"
|
||||
Di default, il cookie di sessione non è impostato su `secure` e/o `httpOnly`. Per ulteriori informazioni su come configurare i cookie, consultare le [API di sessione](../advanced/sessions.md#configuration) di Vapor.
|
||||
|
||||
### Protezione delle Route
|
||||
|
|
|
|||
|
|
@ -89,5 +89,5 @@ let codes = hotp.generate(counter: 25, range: 2)
|
|||
```
|
||||
Nell'esempio qui sopra viene fornito un margine di 2, che significa che le HOTP saranno calcolate con i valori del contatore `23 ... 27`, e tutti questi codici verranno restituiti.
|
||||
|
||||
!!! warning
|
||||
!!! warning "Attenzione"
|
||||
N.B.: Più grande è il margine di errore usato, maggiore è il tempo e la libertà che ha un attacante per agire, diminuendo la sicurezza dell'algoritmo.
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ Il primo passo per aggiornare a Vapor 4 è aggiornare il file delle dipendenze d
|
|||
|
||||
Tutti i pacchetti che sono stati aggiornati a Vapor 4 avranno la versione major incrementata di 1.
|
||||
|
||||
!!! warning
|
||||
!!! warning "Attenzione"
|
||||
L'identificatore di pre-rilascio `-rc` indica che alcuni pacchetti di Vapor 4 non sono ancora stati rilasciati ufficialmente.
|
||||
|
||||
### Vecchi Pacchetti
|
||||
|
|
|
|||
Loading…
Reference in New Issue