flask 实现简单的登录系统demo

这篇具有很好参考价值的文章主要介绍了flask 实现简单的登录系统demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

你提供的代码是一个基本的Flask应用程序,实现了一个简单的登录系统。以下是代码的详细解释:

1. 导入必要的模块:`os` 用于生成密钥,`Flask` 用于创建Web应用程序。
2. 创建Flask应用程序的实例,并为会话管理设置一个密钥。
3. 定义管理员的默认用户名和密码。
4. 定义登录路由('/'),处理GET和POST请求。
    - 如果请求方法是POST,它会获取包含用户名和密码的JSON数据。
    - 然后它会检查提供的用户名和密码是否与默认用户名和密码匹配。
    - 如果凭据有效,它会将用户名存储在会话中。

这个应用程序还包括其他几个路由:
- `/welcome` 路由用于显示欢迎页面,只处理GET请求。它会检查用户是否已登录,如果已登录,则显示欢迎页面,否则重定向到登录页面。
- `/home` 路由用于显示主页,只处理GET请求。它会检查用户是否已登录,如果已登录,则显示主页,否则返回一个JSON响应表示无权限访问主页。
- `/logout` 路由用于注销用户,它会清除会话数据并重定向到登录页面。

如果你运行这个应用程序,它将在本地启动一个Web服务器,并监听默认的端口(通常是5000)。你可以通过访问`http://localhost:5000`来访问登录页面。

项目结构 

flask 实现简单的登录系统demo,# Flask,接口测试,flask,python,后端

app.py

import os
from flask import Flask, render_template, request, redirect, url_for, session, jsonify

app = Flask(__name__)
app.secret_key = os.urandom(24)

# 默认的管理员账号和密码
default_username = 'admin'
default_password = 'admin123'


# 路由:登录页面
@app.route('/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 获取 JSON 数据
        data = request.get_json()

        # 获取账号和密码
        username = data.get('username')
        password = data.get('password')

        # 验证账号和密码
        if username == default_username and password == default_password:
            # 将用户信息存储到 session 中
            session['username'] = username
            return jsonify({'message': '登录成功'})
        else:
            return jsonify({'message': '账号或密码错误'})

    return render_template('login.html')


# 路由:欢迎页面
@app.route('/welcome', methods=['GET'])
def welcome():
    # 检查用户是否已经登录
    if 'username' in session:
        return render_template('welcome.html', username=session['username'])
    else:
        return redirect(url_for('login'))


# 路由:主页
@app.route('/home', methods=['GET'])
def home():
    # 检查用户是否已经登录
    if 'username' in session:
        return render_template('home.html', username=session['username'])
    else:
        return jsonify({'message': '无权限访问主页'})


# 路由:注销
@app.route('/logout')
def logout():
    # 清除 session 数据
    session.pop('username', None)
    return redirect(url_for('login'))


if __name__ == '__main__':
    app.run()

templates / login.html

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form id="loginForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required><br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required><br>
        <button type="submit">Login</button>
    </form>
    <div id="message"></div>

    <script>
        document.getElementById("loginForm").addEventListener("submit", function(event) {
            event.preventDefault();
            var username = document.getElementById("username").value;
            var password = document.getElementById("password").value;
            var data = {
                "username": username,
                "password": password
            };
            fetch("/", {
                method: "POST",
                headers: {
                    "Content-Type": "application/json"
                },
                body: JSON.stringify(data)
            })
            .then(response => response.json())
            .then(data => {
                document.getElementById("message").innerText = data.message;
                if (data.message === "登录成功") {
                    window.location.href = "/welcome";
                }
            })
            .catch(error => {
                console.error("Error:", error);
            });
        });
    </script>
</body>
</html>

templates / welcome.html

<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome, {{ username }}!</h1>
    <p>You have successfully logged in.</p>
    <a href="/home">Go to Home</a>
    <br>
    <a href="/logout">Logout</a>
</body>
</html>

templates / home.html

<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome, {{ username }}!</h1>
    <p>This is the home page.</p>
    <a href="/logout">Logout</a>
</body>
</html>

testcase.py文章来源地址https://www.toymoban.com/news/detail-616207.html

import requests


session = requests.Session()

def login():
    data = {
        "username": "admin",
        "password": "admin123"
    }

    url = 'http://127.0.0.1:5000'

    res = session.request(url=url, method='post', json=data)
    return session


def Welcome():
    url ='http://127.0.0.1:5000/welcome'
    res = login().get(url=url)
    print(res.text)


def index_login():
    url = 'http://127.0.0.1:5000/home'
    res = login().request(url=url, method='get')
    print(res.text)


def index_notlogin():
    url = 'http://127.0.0.1:5000/home'
    res = requests.get(url=url)
    print(res.json())

到了这里,关于flask 实现简单的登录系统demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flask实现一个登录界面

    flask实现一个登录界面 基础的Flask项目结构 forms.py :定义登录表单和表单字段的文件。 templates/login.html :用于渲染登录表单的 HTML 模板文件。 routes.py :定义应用的路由和视图函数的文件。 __init__.py :创建并初始化 Flask 应用的文件。 run.py :启动应用的文件。 安装 Flask 和

    2024年02月15日
    浏览(27)
  • Flask-Sockets和Flask-Login联合实现websocket的登录认证功能

    flask_login 提供了一个方便的方式来管理用户会话。当你在 Flask 的 HTTP 视图中使用它时,你可以简单地使用 @login_required 装饰器来确保用户已登录。 但是, flask_sockets 并没有直接与 flask_login 集成。如果你想在建立 WebSocket 连接时检查用户是否已登录,你需要采取一些额外的步骤

    2024年02月11日
    浏览(33)
  • 创建一个简单的区块链,并使用 Flask 框架提供一个简单的 Web 接口来与区块链交互。

    目录 前言 一、代码展示 二、代码注释 1.简单的区块链模拟实现,这段代码定义了一个简单的区块链类,可以创建一个新的区块链,并能够添加新的区块到链上,同时获取最新的区块信息。这个模拟的区块链可以用于教学或演示区块链的基本概念。 2.这段代码是一个简单的工

    2024年04月14日
    浏览(37)
  • Flask实现接口mock,安装及使用教程(一)

    主要是针对单元测试的应用,它可以很方便的解除单元测试中各种依赖,大大的降低了编写单元测试的难度 正常情况下: 测试客户端 ——测试—— 被测系统 ——依赖—— 外部服务依赖 在被测系统和外部服务依赖之间进行mock server,用于模拟外部服务的各种依赖(模拟后端

    2024年02月13日
    浏览(26)
  • Flask+mysql简单问答网站(实现公网可访问)

    先到github下载仓库文件 https://github.com/QHCV/flask_mysql_blog python版本3.8,提前安装好Mysql数据库 1.安装python包 2.修改配置文件config.py Mysql数据库用户名和密码 用于发送验证码的邮箱配置 ​ 在设置-账户下开启服务,获取授权码 3.初始化数据库 4.启动项目 5.使用ngrok实现公网访问 注

    2024年02月01日
    浏览(16)
  • python基于flask实现swagger在线文档以及接口测试

    阅读对象:知道什么是restful,有了解swagger或者openAPI更佳。 Representional State Transfer(REST):表征状态转移。是一种一种基于HTTP协议的架构。采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源。 如果REST满足一定条件(C/S、无状态、分层系统、

    2024年02月12日
    浏览(30)
  • python3-Flask实现Api接口

    1、:python3-Flask实现Api接口_flask api_Shiro to kuro的博客-CSDN博客 2、  Flask框架的web开发01(Restful API接口规范)_flask patch post_~须尽欢的博客-CSDN博客

    2024年02月11日
    浏览(22)
  • flask框架-认证权限(一):使用g对象存登录用户信息,认证权限一起实现

    apps         -user         __init__.py authen        __init__.py         token.py ext         __init__.py util.py        public.py         __init__.py app.py 依赖包 authen/token.py user/views.py 认证大致的逻辑: 1、用户登录时,生成token,前端保存token信息 2、前端发起请求时,将token携带在cook

    2024年02月09日
    浏览(35)
  • 【python&flask-1】简单实现加减乘除输入界面

    app.py index.html result.html 支持小数点计算

    2024年02月09日
    浏览(27)
  • 基于flask-oidc的OIDC协议授权码模式单点登录SSO实现

    关于SSO单点登录、OIDC协议、授权码模式等相关概念详见基于OIDC的SSO单点登录文章内容 应用注册: 在提供OIDC服务的认证系统中注册应用信息 授权流程: 携带由应用生成的 state (防CSRF跨域信息)和在认证系统中注册的应用信息重定向请求认证系统的授权服务 授权服务重定向到登

    2024年02月13日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包