用户登录源码,如何实现安全可靠的用户认证机制?

用户登录源码通常包括输入用户名和密码,进行验证后返回登录结果。以下是一个简单的示例:,,“python,def user_login(username, password):, if username == "admin" and password == "123456":, return "登录成功", else:, return "用户名或密码错误",,username = input("请输入用户名:"),password = input("请输入密码:"),result = user_login(username, password),print(result),

用户登录是许多应用程序中的基本功能之一,下面我将提供一个基于Python Flask框架的用户登录系统的示例源码,包括前端和后端部分。

用户登录源码,如何实现安全可靠的用户认证机制?

项目结构

/user_login_system
    /static
        /css
            style.css
    /templates
        login.html
    app.py
    models.py

1. 安装依赖

确保你已经安装了Flask,如果没有,请运行以下命令来安装:

pip install flask flaskbcrypt flasksqlalchemy

2. models.py 数据模型

用户登录源码,如何实现安全可靠的用户认证机制?

from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import generate_password_hash, check_password_hash
db = SQLAlchemy()
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)
    def __init__(self, username, password):
        self.username = username
        self.password = generate_password_hash(password).decode('utf8')
    def check_password(self, password):
        return check_password_hash(self.password, password)

3. app.py Flask应用

from flask import Flask, render_template, request, redirect, url_for, flash
from models import User, db, generate_password_hash, check_password_hash
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db.init_app(app)
with app.app_context():
    db.create_all()
@app.route('/')
def index():
    return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        user = User.query.filter_by(username=username).first()
        
        if user and user.check_password(password):
            flash('Login successful!')
            return redirect(url_for('dashboard'))
        else:
            flash('Invalid username or password')
    return render_template('login.html')
@app.route('/dashboard')
def dashboard():
    return "Welcome to the dashboard!"
if __name__ == '__main__':
    app.run(debug=True)

4. templates/login.html HTML模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF8">
    <title>Login</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
    <div class="container">
        <h2>Login</h2>
        {% with messages = get_flashed_messages() %}
            {% if messages %}
                <ul class="flashes">
                    {% for message in messages %}
                        <li>{{ message }}</li>
                    {% endfor %}
                </ul>
            {% endif %}
        {% endwith %}
        <form method="post" action="/login">
            <div>
                <label for="username">Username:</label>
                <input type="text" id="username" name="username" required>
            </div>
            <div>
                <label for="password">Password:</label>
                <input type="password" id="password" name="password" required>
            </div>
            <button type="submit">Login</button>
        </form>
    </div>
</body>
</html>

5. static/css/style.css 样式表(可选)

body {
    fontfamily: Arial, sansserif;
}
.container {
    maxwidth: 300px;
    margin: 0 auto;
    padding: 20px;
    textalign: center;
}
.flashes {
    color: red;
}

6. 初始化数据库并创建用户(可选)

用户登录源码,如何实现安全可靠的用户认证机制?

在第一次运行之前,你可能需要手动添加一些用户到数据库,可以在Flask shell中进行操作:

export FLASK_APP=app.py
flask shell
>>> from models import User, db, generate_password_hash
>>> user = User('testuser', generate_password_hash('password123'))
>>> db.session.add(user)
>>> db.session.commit()

是一个基本的Flask用户登录系统的实现,包括了前端HTML模板、后端逻辑处理、用户认证以及密码加密等功能,你可以根据需要进一步扩展和优化这个系统。

以上就是关于“用户登录源码”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1167888.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-06 12:10
下一篇 2024-10-06 12:12

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入