2010-04-16 38 views

回答

3

我認爲你需要做的是在安裝中間件時設置一個登錄後處理程序動作。在那個動作中,你可以檢查參數,設置一個會話變量等等。爲了給用戶創建一個消息,說明他們的登錄失敗了,我不得不掛鉤到這裏。我檢查登錄表單上的「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「摘要」,以幫助解釋給其他開發者這個東西是如何工作的/使用的術語:

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

我開始使用repoze SQL快速入門插件: 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' 
        ) 
+0

ü可以顯示如何處理它在middleware.py在Python?即時新 – Timmy 2010-04-17 22:07:57

+0

好吧,更新答案包括更多的注意事項/設置它的細節。 – Rick 2010-04-18 14:32:41

+0

謝謝,會做! – Timmy 2010-04-18 17:15:09

相關問題