2016-04-26 36 views
7

Voglio creare un cookie che sarà condivisibile tra i miei sottodomini. Sto cercando di utilizzare il metodo setCookie mostrato qui: https://www.playframework.com/documentation/1.4.x/api/play/mvc/Http.Response.html#setCookie-java.lang.String-java.lang.String-Come creare il cookie Play 1.x solo per il dominio di base (nessun sottodominio)

Se faccio la seguente crea un cookie, ma il dominio è "xxxx.mydomain.com" ... così il pieno dominio:

response.setCookie("loggedIn", "true"); 

Se faccio quanto segue, il cookie non compare mai nel mio browser. Che cosa sto facendo di sbagliato?

response.setCookie("webLoggedIn", "true", ".mydomain.com", "/", 3600, false); 

Quando provo e modificare l'impostazione application.defaultCookieDomain che sembra a rompere i biscotti, ma credo che sia perché sto testando su un dominio diverso rispetto al dominio di produzione che è quello che ho impostato di default troppo.

risposta

1

Su Play Framework 1 il modo corretto è impostare application.defaultCookieDomainproperty su qualcosa come yourdomain.com (senza il punto prefisso). In questo modo tutti i cookie verranno impostati solo sul dominio stesso.

Se si utilizzano queste impostazioni con .yourdomain.com, tutti i cookie saranno visibili per tutti i sottodomini, ad esempio www.yourdomain.com o another.yourdomain.com, diversi dal dominio stesso.

Lei ha accennato che si sta verificando in un dominio diverso rispetto alla produzione, quindi è possibile utilizzare un dominio predefinita per ambienti di sviluppo e il specific domain for production, come:

application.defaultCookieDomain=localhost 

# Production configuration 
%prod.application.defaultCookieDomain=yourdomain.com 

In alternativa, è possibile modificare temporaneamente il file hosts per risolvere il dominio di produzione per il vostro IP localhost, (/ etc/hosts su Linux e OSX):

127.0.0.1 yourdomain.com 

Nota: su Play> = 2.1 la proprietà è stato cambiato in session.domain e su Play> = 2.4 la proprietà era cambiato di nuovo a play.http.session.domain.