在此认证类中,用户数据分别保存在两个表中。这种设置对于大型应用程序可能是必要的,但它增加了实现复杂度。以下是如何实现基于两个表的认证类的示例代码:
import mysql.connector
class Authentication:
def __init__(self, username, password):
self.username = username
self.password = password
self.cnx = mysql.connector.connect(user='root', password='password',
host='127.0.0.1',
database='users')
self.cursor = self.cnx.cursor()
def check_credentials(self):
query1 = ("SELECT * FROM user_info WHERE username=%s")
query2 = ("SELECT * FROM user_password WHERE password=%s")
self.cursor.execute(query1, (self.username,))
user_info = self.cursor.fetchone()
if user_info is None:
return False
self.cursor.execute(query2, (self.password,))
user_password = self.cursor.fetchone()
if user_password is None:
return False
return True
在上面的示例代码中,我们首先连接到数据库。然后,我们定义两个查询,一个用于检索用户信息,另一个用于检索用户密码。在检索用户信息时,我们使用给定的用户名作为参数执行查询。如果没有找到用户信息,则返回False
。一旦找到用户信息,我们使用给定的密码参数执行密码查询。如果找到密码,则验证成功。
请注意,此示例基于MySQL数据库。如果您使用不同的数据库,则需要相应地更改连接和查询语法。
上一篇:Authentication.AuthenticateAsync返回null。
下一篇:AuthenticationContext.AcquireTokenAsync(string,ClientCredential)isobsolete