一千萬個為什麽

搜索

在Python/Pylons中處理不正確的用戶/密碼repoze.who

即時通訊使用FriendlyFormPlugin,但想要檢索作為request.params的一部分輸入的用戶名,但當我檢查時它不再存在。這樣,如果密碼不正確,我可以設置用戶名的默認值。謝謝

最佳答案

我認為您需要做的是在設置中間件時設置後登錄處理程序操作。在該操作中,您可以檢查params,設置會話var等。我必須掛鉤到此處以便向用戶創建他們的登錄失敗的消息。我在登錄表單上檢查“login_failed”參數。

    def post_login(self):
    """ Handle logic post a user's login

    I want to create a login_handler that's redirected to after login. This would
    check 

    - if user was logged in, if not then send back to login
    - if user is admin, go to job list
    - adjust the max age on the existing cookie to XX remember me timeframe

    """
    if auth.check(not_anonymous()):
        log.debug('checked auth')
    else:
        # login failed, redirect back to login
        log.debug('failed auth')
        redirect_to(controller="root", action="login", login_failed=True)

    # expire this cookie into the future
    ck = request.cookies['authtkt']
    response.set_cookie('authtkt', ck,
            max_age=60*60*24*7,
            path='/'
    )

    redirect_to(controller="job", action="list")

作為對更多細節的回應,太大而不能作為另一個評論添加:

所以我有一些你可以看到的東西。首先,這是我的文檔,我正在編寫一個repoze'summary',以幫助向其他開發者解釋這些東西是如何工作的/使用的術語:

http://72.14.191.199/docs/morpylons/auth_overview.html

I started out using the repoze sql quickstart plugin: http://code.gustavonarea.net/repoze.what-quickstart/

然後我撕掉了他們的setup_sql_auth並根據我們自己的需要對其進行了修改,因為我們在應用程序中同時執行了SQL和LDAP身份驗證。請務必查看setup_sql_auth的插件源並仔細閱讀,直到您真正理解它正在做什麽為止。

既然你問過中間件配置......

  app = setup_morpace_auth(app, User, Group, Permission, meta.Session,
                      post_login_url='/root/post_login',
                      post_logout_url='/login',
                      log_level='debug',
                      log_file='stdout'
                      )

轉載註明原文: 在Python/Pylons中處理不正確的用戶/密碼repoze.who