Paul Johnston <paul....@gmail.com> added the comment:

Here's a test app you can use to try it out

__________________________________
Repoze Bugs <b...@bugs.repoze.org>
<http://bugs.repoze.org/issue82>
__________________________________
import webob as wo, wsgiref.simple_server as wrs, sqlite3, sha

def simple_app(environ, start_response):
    req = wo.Request(environ)
    resp = wo.Response(request=req, content_type="text/html; charset=UTF8")
    if 'REMOTE_USER' in environ:
        resp.body = 'hello world'
    else:
        resp.status = 401
    return resp(environ, start_response)

from repoze.who.middleware import PluggableAuthenticationMiddleware
from repoze.who.classifiers import default_request_classifier
from repoze.who.classifiers import default_challenge_decider
from repoze.who.plugins.auth_tkt import AuthTktCookiePlugin
from repoze.who.plugins.hashform import HashFormPlugin
from repoze.who.plugins.sql import SQLAuthenticatorPlugin, 
default_password_compare

db = sqlite3.connect(':memory:')
db.execute('create table users (name varchar, password varchar)')
db.execute('insert into users values (?, ?)', ('paj', 
'{SHA}'+sha.new('test').hexdigest()))
db.commit()

sqlauth = SQLAuthenticatorPlugin('select name, password from users where name = 
:login', lambda: db, default_password_compare)
auth_tkt = AuthTktCookiePlugin('secret', 'auth_tkt')
form = HashFormPlugin('__do_login', rememberer_name='auth_tkt', stored_sha=True)

identifiers = [('form', form),('auth_tkt',auth_tkt)]
authenticators = [('sqlauth', sqlauth)]
challengers = [('form',form)]
mdproviders = []

middleware = PluggableAuthenticationMiddleware(
    simple_app,
    identifiers,
    authenticators,
    challengers,
    mdproviders,
    default_request_classifier,
    default_challenge_decider
    )

if __name__ == "__main__":
    wrs.make_server('', 8000, middleware).serve_forever()
_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to