authenticate on apache via mod_pyton (postgresql) ... glitch
Remy C. Cool
dev-python at smartology.nl
Thu May 9 04:28:30 EDT 2002
I'm experimenting with python/mod_python and run into a problem with
autentication via apache. This is probably not the right place to
ask, but the mod_pyton and apache mailinglists didn't help.
I use the following code:
# authenticate user
import psycopg
import string
import time
from mod_python import apache
def authenhandler(req):
pw = req.get_basic_auth_pw()
user = req.connection.user
# create database connection
connectstring = "dbname=testbase user=tester password=test
port=5432"
dbconn = psycopg.connect(connectstring)
dbhandle = dbconn.cursor()
# define query
dbhandle.execute("SELECT user_id,password FROM users WHERE
username = %s", (user,))
# retrieve results
results = dbhandle.fetchall()
total = len(results)
if total < 1:
# user not known on this system
return apache.HTTP_UNAUTHORIZED
else:
if total > 2:
# database corrupted
return apache.HTTP_UNAUTHORIZED
else:
# extract user_id from list
user_id = results[0][0]
# get host info
curhost = req.get_remote_host(apache.REMOTE_NAME)
# register login try
dbhandle.execute("""INSERT INTO login (user_id,host) VALUES
( %d,%s )""", (user_id,curhost))
dbconn.commit()
# extract password from list
passwd = string.strip(results[0][1])
# compare password with given
if pw == passwd:
# user authenticated
return apache.OK
else:
# incorrect password
return apache.HTTP_UNAUTHORIZED
Authentication works. The username is looked up in the database and
if the password is OK, access is granted. The problem is that for
every login attempt (or page refresh) I get 4 entry's in my login
table ond not one. What am I doing wrong here ?
Regards,
Remy Cool
More information about the Python-list
mailing list