2

web2pyアプリの構成設定を保存する良い方法はありますか?

LDAP からユーザー属性 (名前、電子メール アドレスなど) を検索するスクリプトを含む小さなアプリを作成しました。当社の企業 LDAP サーバーでは、ユーザーの詳細を検索する前にバインドが必要です。

GitHub リポジトリからアプリを共有したいのですが、バインドに使用された資格情報を削除する前ではありません。

.Net のバックグラウンドから来た私は、このような構成を app|web.config ファイルに入れることに慣れています。しかし、これは web2py では嫌われているようです。

これを行うPythonicまたはweb2pyonicの方法は何ですか?

def user_info(username):
    #todo: move these parameters to config
    ldap_host = 'example.com'
    ldap_port = 389
    ldap_base_dn = 'OU=DK,DC=example,DC=com'
    ldap_bind_dn = 'CN=<removed>,OU=DK,DC=example,DC=com'
    ldap_bind_pw = '<removed>'
    ldap_attr_uid = 'sAMAccountName'
    ldap_attr_forename = 'givenName'
    ldap_attr_surname = 'sn'
    ldap_attr_display_name = 'displayName'
    ldap_attr_department = 'department'
    ldap_attr_employee_type = 'employeeType'
    ldap_attr_email = 'mail'

    l = ldap.initialize('ldap://%s:%s' % (ldap_host, ldap_port))
    l.simple_bind_s(ldap_bind_dn, ldap_bind_pw)
    r = l.search_s(base=ldap_base_dn,
                   scope=ldap.SCOPE_SUBTREE,
                   filterstr='(%s=%s)' % (ldap_attr_uid, username),
                   attrlist=[
                       ldap_attr_forename,
                       ldap_attr_surname,
                       ldap_attr_email,
                       ldap_attr_display_name,
                       ldap_attr_employee_type,
                       ldap_attr_department])
    if r:
        dn, e = r[0]
        return {
            'dn': dn,
            'forename': e[ldap_attr_forename][0],
            'surname': e[ldap_attr_surname][0],
            'email': e[ldap_attr_email][0],
            'display_name': e[ldap_attr_display_name][0],
            'department': e[ldap_attr_department][0],
            'employee_type': e[ldap_attr_employee_type][0]}
    return None
4

3 に答える 3

2

web2py の適切な方法は、AppConfig モジュールを使用することだと思います。こちらの web2py リファレンス マニュアルを参照してください: http://web2py.com/books/default/chapter/29/13/deployment-recipes#AppConfig-module

于 2016-09-28T18:25:50.387 に答える
2

さまざまなオプションがありますが、1 つのアプローチは、設定をモジュールに入れてインポ​​ートすることです。/yourapp/modules/ldap_settings.py で:

ldap_host = 'example.com'
ldap_port = 389
...

そして、あなたの機能で:

def user_info(username):
    from ldap_settings import *
    ...
于 2013-08-16T17:28:43.623 に答える
0

KehtAppConfigが述べたように、それを行う適切な方法です。ini ファイルはプライベート フォルダーにあります。ユーザー確認メール/パスワードを忘れた場合のメールを送信するために web2py によって使用される、デフォルトのメール smtp 設定が既にそこにあることがわかります。

必要なキー値のエントリをここに入力してから、AppConfig オブジェクトを作成し、必要なキーを読み取ることができます。

于 2016-09-30T19:41:44.427 に答える