Flask Web 应用与 MongoDB 集成:用户登录和退出

server/2024/10/21 14:23:27/

在本文中,我们将探讨如何使用 Flask Web 框架和 MongoDB 数据库构建一个简单的 Web 应用。我们将使用 Flask-PyMongo 扩展来实现 MongoDB 集成,并使用 Flask-Login 扩展来处理用户认证。

1. 安装所需库

首先,我们需要安装 Flask、Flask-PyMongo 和 Flask-Login 扩展:

pip install Flask Flask-PyMongo Flask-Login

2. 创建 Flask 应用

接下来,我们将创建一个名为 app.py 的 Flask 应用:

from flask import Flask, render_template, request, redirect, url_for
from flask_pymongo import PyMongo
from flask_login import LoginManager, UserMixin, login_user, current_user, login_required, logout_userapp = Flask(__name__)
mongo = PyMongo(app)
login_manager = LoginManager()
login_manager.init_app(app)

3. 定义 User 类

我们将使用 Flask-Login 来处理用户认证。首先,我们需要定义一个 User 类,该类继承自 Flask-Login 的 UserMixin 类:

class User(UserMixin):pass

4. 用户加载回调

接下来,我们需要定义一个用户加载回调函数,该函数将使用 Flask-Login 的 user_loader 装饰器:

@login_manager.user_loader
def user_loader(username):user = User()user.id = usernamereturn user

5. 创建登录和注销路由

现在,我们将创建一个登录页面,并使用 Flask-Login 来处理用户登录和注销:

@app.route('/login', methods=['GET', 'POST'])
def login_page():if request.method == 'POST':username = request.form['username']password = request.form['password']# 在此处验证用户凭据user = User()user.id = usernamelogin_user(user)return redirect(url_for('protected_page'))return render_template('login.html')@app.route('/logout')
def logout_page():if current_user.is_active:logout_user()return 'Logged out'else:return "you aren't login"

6. 创建受保护的页面

最后,我们将创建一个受保护的页面,该页面仅对登录用户可见:

@app.route('/protected_page')
@login_required
def protected_page():return 'This is a protected page.'

7. 运行 Flask 应用

现在,我们已经构建了整个 Flask 应用。在命令行中运行以下命令以启动应用:

python app.py

应用将在本地主机的 8000 端口上运行。您可以通过访问 /login、/logout 路径来测试登录、退出功能。


http://www.ppmy.cn/server/3992.html

相关文章

C++设计模式|创建型 4.建造者模式

1.什么是建造者模式? 建造者模式(也被成为生成器模式),是一种创建型设计模式,软件开发过程中有的时候需要创建很复杂的对象,而建造者模式的主要思想是将对象的构建过程分为多个步骤,并为每个步骤定义一个…

大模型日报2024-04-13

大模型日报 2024-04-13 大模型资讯 Snowflake Copilot AI助手公开预览版发布 摘要: Snowflake Copilot是一款基于Mistral Large动力的AI助手,现已推出公开预览版。根据Snowflake分享的演示,该助手能够在SQL工作表中静默运行,并为用户提供一个…

51单片机实验03-单片机定时/计数器实验

目录 一、实验目的 二、实验说明 1、51单片机有两个16位内部计数器/定时器(C/T, Counter/Timer)。 2、模式寄存器TMOD 1) M1M0工作模式控制位; 2) C/T定时器或计数器选择位: 3)GATE定时器/计数器运行…

文件操作和IO

1.认识文件 我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进⾏数据保存时,往往不是保存成⼀个整体,⽽是独⽴成⼀个个的单位进⾏保存,这个独⽴的单位就被抽象成⽂件的概念,就类似办公桌…

hadoop:hafs:上传文件、删除文件、改变文件权限等常用命令

Hadoop是一个开源的分布式计算框架,用于处理和分析大数据集。Hadoop提供了大量的命令来管理集群、处理数据以及执行其他相关任务。 🍀以下是一些常用的Hadoop命令的汇总: 1 启动和关闭Hadoop服务 启动所有Hadoop服务 start-all.sh 关闭所有Ha…

linux对网络的监控操作学习--端口、流量、IP

文章目录 linux对网络的监控操作学习--端口、流量、IP理解Netfilter队列设置iptables规则以使用队列使用用户空间程序处理队列中的数据包linux用户空间使用Python实现使用rust实现功能 综合应用注意事项其他实现方式nftablesfirewalldufw (Uncomplicated Firewall)tc (Traffic …

Android --- Activity

官方文档-activity Activity 提供窗口,供应在其中多个界面。此窗口通常会填满屏幕,但也可能小于屏幕并浮动在其他窗口之上。 大多数应用包含多个屏幕,这意味着它们包含多个 Activity。通常,应用中的一个 Activity 会被指定主 Ac…

数据结构- 顺序表-单链表-双链表 --【求个关注!】

文章目录 一 顺序表代码: 二 链表单链表双向链表 一 顺序表 顺序表是线性表的一种 所谓线性表指一串数据的组织存储在逻辑上是线性的,而在物理上不一定是线性的 顺序表的底层实现是数组,其由一群数据类型相同的元素组成,其在逻辑…