· 10 years ago · Sep 06, 2016, 01:32 PM
1CREATE EXTENSION pgcrypto;
2
3CREATE TABLE users(
4 login text PRIMARY KEY,
5 passwd text NOT NULL
6);
7
8INSERT INTO users(login, passwd)
9VALUES('my_login', crypt('my_password', gen_salt('bf')));
10
11SELECT count(*) AS match
12FROM users u
13WHERE
14 u.login = 'my_login'
15 AND u.passwd = crypt('my_password', u.passwd);
16
17import bcrypt
18import psycopg2
19
20def validate_login(user_login, user_passwd):
21 con = psycopg2.connect('<your connection string>')
22 cur = con.cursor()
23 cur.execute("SELECT passwd FROM users WHERE login = %s", (user_login,))
24 db_passwd = cur.fetchone()
25 cur.close()
26 con.close()
27
28 if db_passwd == None:
29 return false # login not found
30 else:
31 if bcrypt.hashpw(user_passwd, db_passwd[0]) == db_passwd[0]:
32 return true # login successfully
33 else:
34 return false # login exists but passwd is incorrect