Se occorre memorizzare delle variabili globali specifiche dell’installazione di una web app che non si vuole o può mettere in una tabella è possibile salvarle nei file di configurazione dell’applicazione web.config (nel caso di C#) o web.xml (per Java).
Per esempio se volessimo impostare i parametri di connessione al database di una applicazione possiamo salvarli nei due file menzionati e qui sotto vediamo un esempio del codice per memorizzare i tre parametri per la connessione ad un database: connection string, user e password.
web.config
<appSettings>
<add key="dbConnectionString" value="stringa di connessione" />
<add key="dbUser" value="utente" />
<add key="dbPassword" value="password" />
</appSettings>
web.xml
<context-param>
<param-name>dbConnectionString</param-name>
<param-value>stringa di connessione</param-value>
<param-name>dbUser</param-name>
<param-value>utente</param-value>
<param-name>dbPassword</param-name>
<param-value>password</param-value>
</context-param>
Naturalmente essendo dati sensibili quelli di accesso al database possono essere memorizzati criptati nei due file. Possono anche chiamarsi xx1, xx2 e xx3 in modo che anche se un furbacchione li trova sul server magari non capisce coso sono.
Certo che se un hacker è arrivato al server delle applicazioni ha già fatto tanto ma se non gli rendiamo facile la vita è meglio.
Directory custom
Questi file vanno posizionati nella directory custom dell’applicazione in modo che possano essere personalizzati e inclusi nella distribuzione.
Vanno presi dalle directory template di C# e Java di Instant Developer:
- web.config - C:\Program Files (x86)\INDE\CURRENT\Template\CSharp\
- web.xml - C:\Program Files (x86)\INDE\CURRENT\Template\Servlet\web\
Il file web.config va messo nella root della directory custom mentre per web.xml occorre posizionarlo nella sottodirectory web.
Utilizzo
Le variabili si leggono dall’applicazione mediante il metodo getSetting(), vediamo un esempio:
string dbConnection = WebApp.getSetting(Application, "dbConnectionString")
string dbUser = WebApp.getSetting(Application, "dbUser")
string dbPassword = WebApp.getSetting(Application, "dbPassword")
//
// In sviluppo lascio vuoti i parametri così si utilizza la connessione di design time
if (dbConnection != "")
{
Nwinddb.defaultConnectionString = dbConnection
Nwinddb.defaultUserID = dbUser
Nwinddb.defaultPassword = dbPassword
}
Note
Da ogni cliente ci saranno i corretti valori di connessione al suo database e si potrà impostare il file web.config o web.xml in sola lettura in modo da non sovrascriverlo per sbaglio in fase di pubblicazione.
Utilizzando IDManager per pubblicare se si toglie la spunta di pubblicazione al file questa cosa viene ricordata nelle pubblicazioni successive (il file senza la spunta di pubblicazione è evidenziato rispetto agli altri nella lista).
La stringa di connessione può essere modificata anche utilizzando i parametri di IDManager che poi vengono utilizzati quando il sistema pubblica l’applicazione.
I parametri di connessione si trovano nella scheda di dettaglio del database dell’app.
