欢迎访问宙启技术站
智能推送

Python中如何实现用户登录次数限制和锁定账号功能

发布时间:2024-01-06 15:10:49

在Python中实现用户登录次数限制和锁定账号功能,可以使用数据库来存储用户信息,并在登录过程中进行判断和处理。下面给出一个示例:

首先,需要创建一个数据库表来存储用户信息,包括用户名、密码、登录次数和账号状态等字段。可以使用SQLite数据库进行演示,创建一个名为users的表格:

import sqlite3

# 连接到数据库
conn = sqlite3.connect('user.db')
c = conn.cursor()

# 创建用户表
c.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT NOT NULL UNIQUE,
        password TEXT NOT NULL,
        login_attempts INTEGER DEFAULT 0,
        account_locked INTEGER DEFAULT 0
    )
''')

# 关闭数据库连接
conn.close()

在用户登录过程中,需要实现登录验证和记录登录次数的功能。可以创建一个login函数来实现:

import sqlite3

def login(username, password):
    conn = sqlite3.connect('user.db')
    c = conn.cursor()

    # 查询用户信息
    c.execute('SELECT * FROM users WHERE username=?', (username,))
    user = c.fetchone()

    if user:
        user_id, _, hashed_password, login_attempts, account_locked = user

        # 如果账号已经被锁定
        if account_locked == 1:
            print('账号已被锁定,请联系管理员解锁。')
            return

        # 验证密码
        if check_password(password, hashed_password):
            print('登录成功!')
            # 重置登录次数
            c.execute('UPDATE users SET login_attempts=0 WHERE id=?', (user_id,))
        else:
            # 增加登录次数
            login_attempts += 1
            c.execute('UPDATE users SET login_attempts=? WHERE id=?', (login_attempts, user_id))

            # 如果登录次数超过阈值
            if login_attempts >= 3:
                print('登录次数已超过限制,账号将被锁定。')
                c.execute('UPDATE users SET account_locked=1 WHERE id=?', (user_id,))
                conn.commit()
            else:
                print('密码错误,请重试。')
    else:
        print('用户不存在。')

    # 关闭数据库连接
    conn.commit()
    conn.close()

# 密码验证函数
def check_password(password, hashed_password):
    # 验证密码的逻辑
    return password == hashed_password

上述代码中,login函数首先连接到数据库并查询指定用户名的用户信息。如果用户存在,再进行密码验证。如果密码正确,则登录成功,并重置登录次数。如果密码错误,则增加登录次数。如果登录次数超过3次,则锁定账号,并更新数据库中对应的字段。最后,关闭数据库连接。

使用这个示例,可以在其他模块中调用login函数来进行用户登录。

from login import login

# 用户登录示例
username = input('请输入用户名:')
password = input('请输入密码:')
login(username, password)

这样,就实现了用户登录次数限制和锁定账号的功能。通过使用数据库存储用户信息并查询更新相关字段,可以灵活地实现更多的用户管理功能。