2017-09-21 5 views
0
projet

Mon Django contient des caractères spéciaux tels que #, @, ^, * etc. Je suis en train de mettre cela comme une variable d'env à /etc/environment.Comment définir avec vigueur clé secrète Django comme clé secrète de la variable d'environnement

I sont les suivantes dans le fichier:

export SECRET_KEY='zotpbek!*t_abkrfdpo!*^@#plg6qt-x6(%dg)9p(qoj_r45y8' 

à savoir J'ai inclus des guillemets simples autour de la chaîne car il contient des caractères spéciaux (également prescrit par this SO post). Je quitte le fichier et fais source /etc/environment. Ensuite, je tape env dans le terminal: SECRET__KEY montre correctement. Je me déconnecte et je me reconnecte. Je saisis à nouveau env.

Cette heure SECRET_KEY est toujours affichée, mais elle est tronquée au-delà du caractère @. Il exclut tout ce qui est au-delà (et inclus) du caractère #.

Comment résoudre ce problème? Essayer avec des guillemets n'a pas allégé quelque chose non plus. Mon système d'exploitation est Ubuntu 14.04 LTS.


p.s. Je suis conscient que les variables d'environnement ne supportent pas le contrôle d'accès; Il y a un tas de raisons pour ne pas définir la clé secrète Django comme une var env. Pour les fins de cette question, mettons cela sur le brûleur arrière.

Répondre

0

Ce n'est pas un problème Django en soi. Selon cette question Escape hash mark (#) in /etc/environmentne peut pas utiliser un "#" dans /etc/environment.

Je vous recommande de continuer à régénérer votre clé secrète jusqu'à ce que vous obteniez un sans #s - cela devrait résoudre le problème. Django Extensions a une commande generate_secret_key pour cela. L'effet secondaire de la modification de la clé secrète est que les sessions en cours deviennent invalides, à moins que vous ne l'utilisiez dans d'autres endroits de votre application.

+1

Alors pourquoi la clé secrète a-t-elle été affichée correctement après avoir été réglée initialement? –