Jeśli to dane wrażliwe, nie należy przechowywać go w kodzie źródłowym jak to zostaną sprawdzone w kontroli źródła. Źli ludzie (wewnątrz lub na zewnątrz organizacji) mogą go tam znaleźć. Ponadto środowisko programistyczne prawdopodobnie używa różnych wartości konfiguracyjnych ze środowiska produkcyjnego. Jeśli te wartości są przechowywane w kodzie, będziesz musiał uruchomić inny kod w fazie projektowania i produkcji, co jest nieporządną i złą praktyką.
W moich projektach, umieścić dane konfiguracyjne w magazynu danych przy użyciu tej klasy:
from google.appengine.ext import ndb
class Settings(ndb.Model):
name = ndb.StringProperty()
value = ndb.StringProperty()
@staticmethod
def get(name):
NOT_SET_VALUE = "NOT SET"
retval = Settings.query(Settings.name == name).get()
if not retval:
retval = Settings()
retval.name = name
retval.value = NOT_SET_VALUE
retval.put()
if retval.value == NOT_SET_VALUE:
raise Exception(('Setting %s not found in the database. A placeholder ' +
'record has been created. Go to the Developers Console for your app ' +
'in App Engine, look up the Settings record with name=%s and enter ' +
'its value in that record\'s value field.') % (name, name))
return retval.value
Aplikacja byłoby to zrobić, aby uzyskać wartość:
AMAZON_KEY = Settings.get('AMAZON_KEY')
Jeśli jest wart, że klucz w magazynie danych, dostaniesz go. Jeśli tak nie jest, zostanie utworzony rekord zastępczy i zostanie zgłoszony wyjątek. Wyjątek przypomni Ci o przejściu do Developers Console i zaktualizowaniu rekordu zastępczego.
Uważam, że to nie zgaduje ustawień wartości konfiguracyjnych. Jeśli nie masz pewności, jakie wartości konfiguracyjne ustawić, po prostu uruchom kod, a on ci to powie!
jakiego rodzaju dane uwierzytelniające? – systempuntoout
@systempuntoout Na przykład moje dane uwierzytelniające Amazon AWS dotyczące dostępu do S3 –
Jeśli nie podoba ci się zwykłe poświadczenia w kodzie źródłowym, jedynym sposobem jest użycie modelu konfiguracji w magazynie danych, w przeciwnym razie możesz zapisać ustawienia w niektórych plikach .ini dostęp do niego za pomocą [ConfigParser] (http://docs.python.org/library/configparser.html). – systempuntoout