Python Flask前端自动登录功能实现详解

目录
  • 引言
  • 1. 登录时
  • 2. 定义全局拦截器

引言

在已有的网站中,几乎所有的网站都已经实现了 自动登录

所谓自动登录,其实就是在你登录后,然后关闭浏览器,接着再启动浏览器重新进入刚刚的网站时,无需自己再次登录。更准确的说,在一段时间内,无需自己再次登录

思路:其实所谓的自动登录,到最后的后端逻辑,和你正常的登录逻辑是一样的,也是判断用户名和密码是否正确。只是我们要省略让用户再次输入用户名和密码的步骤,那么肯定就要将用户名和密码存储在一个地方。当检测到用户再次进入时,看看是否满足可以自动登录的条件,满足的话,将保存的用户名和密码取出来,帮用户自动登录。那我们就要去想,将用户名和密码存储到什么地方

在本篇文章中,本人会在 Flask 项目中使用 ** session + cookie** 的方式,实现上述的功能

实现的方式有很多种,下面的只是其中一种,大家可以自己的需求进行改造和拓展

1. 登录时

登录,前端传来用户名和密码,然后去后端进行验证。如果用户名和密码都正确,则正常登录

此时,我们需要把用户名、密码存进 cookie 中,然后在 session 存储一个是否已经登录的标识

重要的话说三次:

存储密码时,记得加密!

存储密码时,记得加密!

存储密码时,记得加密!

参考代码如下

from flask import make_response, session, request
@user.route('/login', methods=['POST'])
def login():
	username = request.form.get('username').strip()
    password = request.form.get('password').strip()
    ......  //  自己的逻辑处理
    if 登录成功:
        session['islogin'] = 'true'  //  是否已经登录的标识
        session['username'] = username  //  根据自己的需求,在session里存储一些值
        # 将Cookie写入浏览器
        response = make_response('login-pass')  //  登录成功,返回给前端的值
        response.set_cookie('username', username, max_age=30*24*3600)  //  max_age,cookie的存活时间,这里表示一个月
        response.set_cookie('password', password, max_age=30*24*3600)
        return response
    else:
        return 'login-fail'  //  登录失败,返回给前端的值

2. 定义全局拦截器

这个时候,可能会有人有疑问,为什么要使用拦截器?

试想:进入一个网站有多个入口,你知道用户会以哪个入口来访问你的网站吗?那我们总不能每一个进入网站的接口都去写一份自动登录的逻辑代码吧。所以我们可以直接使用拦截器,将所有的请求都拦截起来,进行统一的处理。然后将静态的资源和不用进行自动登录逻辑处理的请求过滤掉即可

在程序的主入口 main.py 定义一个拦截器

# 定义全局拦截器,实现自动登录
@app.before_request
def before():
    url = request.path
    pass_list = ['/user', '/login', 'logout']  //  不用进行自动登录逻辑判断的请求
    if url in pass_list or url.endswith('.js') or url.endswith('.jpg'):
        pass  //  过滤不用进行自动登录逻辑处理的请求和静态的资源
    else:
        if session.get('islogin') is None:
            username = request.cookies.get('username')
            password = request.cookies.get('password')
            if username != None and password != None:
                ......  //  自己的逻辑处理
                if 登录成功:
        			session['islogin'] = 'true'  //  是否已经登录的标识
        			session['username'] = username  //  根据自己的需求,在session里存储一些值

3. 退出登录时

退出登录时,清空 session 和 cookie

from flask import make_response, session, request, url_for
@user.route('/logout')
def logout():
    # 清空session和Cookie,页面跳转
    session.clear()
    response = make_response('注销并进行重定向', 302)  # 302状态码表示重定向
    # 两种重定向的方法
    # response.headers['Location'] = '/'
    response.headers['Location'] = url_for('index.home')  # 另一种方式,括号里的值写请求为“/” 的 - Blueprint名.方法名
    # 两种清除cookie的方式
    response.delete_cookie('username')
    response.set_cookie('password', '', max_age=0)
    return response

上面第二种重定向方式中,所对应的值

index = Blueprint("index", __name__)
@index.route('/')
def home():
    ......  //  自己的逻辑处理

到此这篇关于Python Flask前端自动登录功能实现详解的文章就介绍到这了,更多相关Python Flask自动登录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python Flask实现图片验证码与邮箱验证码流程详细讲解

    目录 1. 图片验证码 1.1 工具类-utility.py 1.2 控制层-user.py 2. 邮箱验证码 2.1 准备 2.2 工具类-utility.py 2.3 控制层-user.py 1. 图片验证码 1.1 工具类-utility.py 将所有和图片验证码有关的方法放在类 ImageCode import random import string from io import BytesIO from PIL import Image, ImageFont, ImageDraw c

  • 用Python Flask创建简洁高效的URL短链接服务

    目录 一.设置 Flask 应用程序 二.将 URL 存储在字典中 三.生成唯一的短 URL 四.重定向到原始 URL 大家好,使用 Python Flask 创建 URL 缩短器是一个有趣而简单的项目,可以帮助您深入了解 Web 开发的世界.Flask 是 Python 的轻量级 Web 框架,可让您快速轻松地构建 Web 应用程序.在本文中,我们将介绍使用 Flask 构建基本 URL 缩短器的过程. 一.设置 Flask 应用程序 首先,为您的项目创建一个新目录并在该目录中打开一个终端.然

  • Python Flask框架模块安装级使用介绍

    目录 一.概述 二.Flask 架构 三.应用模块 四.路由模块 五.视图模块 六.模板模块 七.数据库模块 1)安装 SQLAlchemy 2)配置数据库连接 3)定义数据库模型 4)数据库操作 八.表单模块 1)安装 WTForms 2)创建表单类 3)在视图函数中使用表单 4)渲染表单模板 九.扩展模块 一.概述 Python Flask是一个轻量级的Web应用程序框架,它是使用Python编写的,用于快速开发Web应用程序和API.它的设计理念是简单.易用和可扩展. 以下是Python

  • Python+ Flask实现Mock Server详情

    目录 一.Mock介绍 1.什么是Mock 2.Mock的三种典型应用场景 3.Mock的作用 4.Mock实现的3种方式 二.环境搭建 三.Mock的案例 一.Mock介绍 1.什么是Mock 模拟接口 接口Mock测试:在接口测试中,对于某些不容易构造或者不容易获取的接口,可以用一个模拟接口来代替 2.Mock的三种典型应用场景 依赖的接口未实现 依赖的接口响应速度慢 针对接口模拟各种异常 3.Mock的作用 可以用来解除测试对象对外部服务的依赖,使得测试用例可以独立运行 模拟异常逻辑,异常

  • Python Flask-Login实现用户会话管理

    Flask-Login 为 Flask 提供用户会话管理.它处理登录.注销和长时间记住用户会话等常见任务. Flask-Login 不绑定到任何特定的数据库系统或权限模型.唯一的要求是您的 用户对象实现一些方法,并且您向能够 从用户 ID 加载用户 的扩展提供回调. GitHub:https://github.com/maxcountryman/flask-login LoginManager 是一个类,有多个方法和属性:该类初始化的对象用于保存用于登录的设置.LoginManager 实例不绑

  • Python Flask前端自动登录功能实现详解

    目录 引言 1. 登录时 2. 定义全局拦截器 引言 在已有的网站中,几乎所有的网站都已经实现了 自动登录 所谓自动登录,其实就是在你登录后,然后关闭浏览器,接着再启动浏览器重新进入刚刚的网站时,无需自己再次登录.更准确的说,在一段时间内,无需自己再次登录 思路:其实所谓的自动登录,到最后的后端逻辑,和你正常的登录逻辑是一样的,也是判断用户名和密码是否正确.只是我们要省略让用户再次输入用户名和密码的步骤,那么肯定就要将用户名和密码存储在一个地方.当检测到用户再次进入时,看看是否满足可以自动登录的

  • Spring security实现记住我下次自动登录功能过程详解

    一.原理分析 第一次登陆时,如果用户勾选了readme选项,登陆成功后springsecurity会生成一个cookie返回给浏览器端,浏览器下次访问时如果携带了这个cookie,springsecurity就会放行这次访问. 二.实现方式 2.1 简单实现方式 (1) 在springsecurity的配置文件中,http节点下增加一个remember-me配置 <security:http auto-config="true" use-expressions="fal

  • Python Flask基础到登录功能的实现代码

    视频教程教学地址:https://www.bilibili.com/video/BV18441117Hd?p=1 0x01路由 from flask import Flask app = Flask(__name__) # flask对象实例化 @app.route('/index') #定义首页 @app.route('/') #设置默认index def index(): return 'hello world!' @app.route('/home/<string:username>')

  • Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个人觉得的微信小程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发小程序应该很容易上手,因为本文着重讲解后台程序的搭建,所以,微信小程序的前端开发将一笔带过,有兴趣学习小程序前端语言的同学可移步网易云课堂的一套快速入门课程<轻松玩转微信小程序>. 分三步讲解微信小程序与Python后台

  • Python实现邮件自动下载的示例详解

    开始码代码之前,我们先来了解一下三种邮件服务协议: 1.SMTP协议 SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议.相当于中转站,将邮件发送到客户端. 2.POP3协议 POP3(Post Office Protocol 3),即邮局协议的第3个版本,是电子邮件的第一个离线协议标准.该协议把邮件下载到本地计算机,不与服务器同步,缺点是更易丢失邮件或多次下载相同的邮件. 3.IMAP协议 IMAP(Internet Mail Access Protoc

  • Python Flask搭建yolov3目标检测系统详解流程

    [人工智能项目]Python Flask搭建yolov3目标检测系统 后端代码 from flask import Flask, request, jsonify from PIL import Image import numpy as np import base64 import io import os from backend.tf_inference import load_model, inference os.environ['CUDA_VISIBLE_DEVICES'] = '

  • Python Flask中Cookie和Session区别详解

    目录 前言 安装 创建虚拟环境 进入虚拟环境 安装 flask Cookie的使用 Session的使用 前言 本篇文章,阐述一下Flask中Cookie和Session 为什么要说Cookie和Session呢? 答:因为http请求是无状态的,怎么理解呢?当你访问B站时,如果你没有Cookie或者Session,B站就认为你是一个没有登录的用户.如果你有Cookie或Session,那么B站就知道你登录了,并且知道你是谁.所以可以把跟你相关的资料返回 给你两者的区别: 答:Cookie是明文

  • Vue+Vuex实现自动登录的知识点详解

    在之前实现的版本中,如果你进行测试,可以看到在浏览器的local Storage中,确实里面有了我们加入的Authorization,而且如果没有登录的话,直接访问主页会进入登录页面.但其实有好几个问题并没有解决: 一.我们所加的Authorzation其实并不是从服务器传过来的,而是自己的测试:只要服务器传过来了200的响应状态码,我们就自己加上固定的Authorization 二.我们重新进入的时候,判断条件是只要有Authorization就可以直接进入了,但其实应该提交给服务器判断这个A

  • Python+flask实现restful接口的示例详解

    目录 1.第一个实例:HelloWorld 2.Post 方法 3.Get 方法 4.通过变量设置动态url 1.第一个实例:HelloWorld 1.编写python代码 from flask import Flask app=Flask(__name__) @app.route('/HelloWorld') def hello_world(): return "Hello World!" if __name__ == "__main__": app.run(ho

  • python实现秒杀商品的微信自动提醒功能(代码详解)

    技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒 工具:需要两个微信号,这两个微信号互为好友 1.收集自己想要的商品url 我们就以京东来举例,获取京东的秒杀商品信息: 首先,我们在网页上打开京东,搜索我们想要的商品,这边我就以我最近买的东西为例子: 我们需要找到它的商品信息,需要打开浏览器的开发者模式,之后我们需要选择自己的配送地址,这个时候里面就发送一些接口请求: 我们选择一个有用的商品信息接口: 找到自己想要商品的信息接口,来判断它是否有货: 一般规则是:如果这个接口书籍里面

随机推荐