解决:Python-Flask框架—通过flask_login模块及Session模块检测是否有用户登录

这篇具有很好参考价值的文章主要介绍了解决:Python-Flask框架—通过flask_login模块及Session模块检测是否有用户登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、简单示例

二、查看session信息

三、设置session过期时间


 

一、简单示例

要在Flask中检测用户是否登录,可以使用以下方法:

  1. 在用户登录时,将用户的登录状态存储在会话中。例如,使用flask_login库进行用户认证和登录。

  2. 在需要检查用户是否登录的视图函数中,从会话中获取用户的登录状态,并根据需要执行相应的操作。

以下是一个简单的示例:

首先,安装flask_login库:

pip install flask-login

然后,创建一个简单的Flask应用并实现用户登录功能:

from flask import Flask, render_template, redirect, url_for, request, session
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required

app = Flask(__name__)
app.secret_key = 'your_secret_key'
login_manager = LoginManager()
login_manager.init_app(app)

class User(UserMixin):
    def __init__(self, id):
        self.id = id

# 模拟用户数据
users = {'user1': {'password': 'password1'}, 'user2': {'password': 'password2'}}

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        user_id = request.form['user_id']
        password = request.form['password']
        if user_id in users and users[user_id]['password'] == password:
            user = User(user_id)
            login_user(user)
            return redirect(url_for('protected'))
        else:
            return 'Invalid credentials'
    return render_template('login.html')

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('login'))

@app.route('/protected')
@login_required
def protected():
    return 'Logged in as: ' + session['username'] + '<br>' 
           + '<a href="/logout">Logout</a>'

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

在这个示例中,我们使用了flask_login库来处理用户认证和登录。当用户成功登录后,我们将用户的登录状态存储在会话中。然后,在需要检查用户是否登录的视图函数(如protected视图)中,我们可以通过检查session对象来判断用户是否已登录。如果用户未登录,我们可以重定向到登录页面。

稍作修改:

Users.py

(id即为用户名,前端传递回来的是user_name,与后端user_id是同意。)

from flask_login import UserMixin

class User(UserMixin):
    def __init__(self, id):
        self.id = id

app.py

from flask import Flask,render_template,request,redirect,url_for,url_for,session
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required
from Users import User
app = Flask(__name__)

app.secret_key = 'your_secret_key'
login_manager = LoginManager()
login_manager.init_app(app)

# 模拟用户数据
users = {'admin': {'password': '111111'}, 'abc': {'password': '123456'}}


@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        user_id = request.form['username']
        password = request.form['password']
        if user_id in users and users[user_id]['password'] == password:
            user = User(user_id)
            login_user(user)
            return render_template('index.html')
        else:
            return 'Invalid credentials'
    return render_template('login.html')

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('/'))

@app.route('/')
def hello():
    return render_template('login.html')


@app.route('/index')
@login_required
def index():
    return render_template('index.html')

前端登录表单

解决:Python-Flask框架—通过flask_login模块及Session模块检测是否有用户登录,# Python疑难杂症,# 《代码骑士网站开发日记》,flask,python,后端

二、查看session信息

        1、使用session对象:

from flask import session

# 获取当前会话
current_session = session

# 打印会话内容
print(current_session)

 

        2.使用flask_session库:

首先,安装flask_session库:

pip install flask-session

然后,在Flask应用中配置和使用flask_session库:

from flask import Flask, render_template, redirect, url_for, request, session
from flask_session import Session

app = Flask(__name__)
app.secret_key = 'your_secret_key'
app.config['SESSION_TYPE'] = 'filesystem'  # 设置会话存储类型为文件系统
Session(app)  # 初始化会话对象

@app.route('/')
def index():
    # 获取当前会话
    current_session = session
    # 打印会话内容
    print(current_session)
    return render_template('index.html')

三、设置session过期时间

在Flask中,可以通过设置PERMANENT_SESSION_LIFETIME配置项来设置session的过期时间。例如,将过期时间设置为30分钟:

from datetime import timedelta

app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=30)

这样,当用户会话超过30分钟后,session将被自动过期并清除。

在Flask中,可以通过设置PERMANENT_SESSION_LIFETIME配置项来设置session的过期时间。例如,将过期时间设置为30秒:

from datetime import timedelta

app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(seconds=30)

这样,当用户会话超过30秒后,session将被自动过期并清除。文章来源地址https://www.toymoban.com/news/detail-836759.html

到了这里,关于解决:Python-Flask框架—通过flask_login模块及Session模块检测是否有用户登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python-Flask:编写自动化连接demo脚本:v1.0.0

    目前只是远程连接+文件上传,后续会继续优化 弄个公共的nfs,平常一些脚本和包会放到这个nfs里,脚本或包自动从nfs里拉,然后执行脚本,即可部署,包括多机部署。

    2024年02月07日
    浏览(30)
  • Flask基于flask_login实现登录、验证码

    flask_login 是一个 Flask 扩展,用于在 Flask web 应用中实现用户会话管理。它允许你跟踪哪些用户已经登录,并管理他们的登录状态。flask_login 提供了用户认证的基础结构,但具体的用户验证(如用户名和密码检查)和存储(如数据库)需要你自行实现。 以下是 flask_login 的一些

    2024年04月15日
    浏览(20)
  • Flask_Login使用与源码解读

    用户登录后,验证状态需要记录在会话中,这样浏览不同页面时才能记住这个状态,Flask_Login是Flask的扩展,专门用于管理用户身份验证系统中的验证状态。 注:Flask是一个微框架,仅提供包含基本服务的核心(路由、网关接口、模板),其它功能都是通过扩展来实现,它有无

    2024年02月06日
    浏览(27)
  • 使用了Python语言和Flask框架。创建一个区块链网络,允许用户通过HTTP请求进行交互,如包括创建区块链、挖矿、验证区块链等功能。

    目录 大概来说: 二、代码注释 1.添加交易方法(add_transaction函数) 2.添加新的节点(add_node 函数) 3、替换链的方法(replace_chain函数) 总结 定义了一个名为Blockchain的类,用于构建区块链。 在Blockchain类中,定义了创建区块、获取上一个区块、工作量证明、哈希计算、验证区

    2024年04月25日
    浏览(27)
  • python之 flask 框架(1)

    pycharm 查看方法的定义(类似.net 中 F12) ctrl + 单击(对应的方法) 两种方法 pip list 查看虚拟环境所有的包 pip freeze 查看自己安装的包 专业版pychram 社区版 要手动创建 @app.route(‘/xxx/converter:variable_name’) converter:参数类型 string:接受任何没有斜杠’/\\\'的字符串 默认参数类型

    2024年04月12日
    浏览(29)
  • Python学习十二:Flask框架

    Flask 依赖两个外部库:WerkZeug 和 Jinja2。WerkZeug 是一个WSGI(在web应用和多种服务器之间的标准Python 接口)工具集。Jinja2负责渲染模板。所以在安装Flask之前,需要安装这两个外部库,而最简单的方法就是使用 Virtualenv 创建虚拟环境 1.1.1 安装Virtualenv 检验 1.1.2 创建虚拟环境 下一步

    2024年02月01日
    浏览(30)
  • 【小沐学Python】Python实现Web服务器(Flask框架扩展:Flask-Admin)

    flask作为一个微框架,Flask 允许您以很少的开销构建 Web 服务。 它为您(设计师)提供了自由,以适合您的方式实施您的项目 特定应用。 一个最小的 Flask 应用如下: Flask-Admin是一个batteries-included,易于使用的Flask扩展,可让您 向 Flask 应用程序添加管理界面。它的灵感来自 d

    2024年02月02日
    浏览(67)
  • Python Web框架 Flask 安装、使用

    Python Web框架 Flask 安装 安装 Flask 框架 首先需要安装 Flask 框架, 可以通过以下命令安装: 创建 Flask 应用程序 在本地创建一个文件夹,例如叫 myapp ,在该文件夹中创建一个 Python 文件 app.py ,并在其中编写以下代码: 在上面的代码中,我们导入 Flask 框架,并创建了一个名为 ap

    2024年02月17日
    浏览(34)
  • Python框架之Flask入门和视图

    需要安装 Pycharm专业版 Python后端的2个主流框架 Flask 轻量级框架 Django 重型框架 Flask是一个基于Python实现的web开发微框架 官方文档:https://flask.palletsprojects.com/ 中文文档:https://dormousehole.readthedocs.io/ Flask是一个基于MVC设计模式的Web后端框架 MVC: M: Model 数据模型 V: View 界面 C:

    2024年02月06日
    浏览(33)
  • python~Flask框架建立web应用

    通过python来开发web应用,可以产简化了web开发的流程,功能和函数库也是非常丰富,我们也是开箱即用,目前比较流程的WEB框架就是Flask和django。 根据2020年JetBrains Python开发人员调查,Django和Flask是迄今为止最受欢迎的两个Python Web框架。 考虑到Web开发行业在过去五年左右的时

    2024年02月07日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包