在Python / Pylons中处理不正确的用户/密码repoze.who

时间:2010-04-16 22:13:12

标签: python pylons repoze.who

我正在使用FriendlyFormPlugin,但想要检索作为request.params的一部分输入的用户名,但是当我检查时它不再存在。这样我可以设置密码不正确的用户名默认值。感谢

1 个答案:

答案 0 :(得分:3)

我认为您需要做的是在设置中间件时设置后登录处理程序操作。在该操作中,您可以检查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")

作为对更多细节的回应,太大而无法添加为另一条评论:

所以我有一些你可以看到的东西。首先,这是我的文档,我正在撰写一篇重新发布的“摘要”,以帮助向其他开发者解释这些东西是如何工作的/术语使用的:

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

我开始使用repoze sql quickstart插件: 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'
                      )