iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python制作简易注册登录系统
  • 175
分享到

Python制作简易注册登录系统

简易系统Python 2022-06-04 18:06:26 175人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这次我主要讲解如何用python基于flask的登录和注册,验证方式采用Basic Auth 主要用以下库 import os #Flask的基础库 from flask import Flask,

这次我主要讲解如何用python基于flask的登录和注册,验证方式采用Basic Auth

主要用以下库


import os
#Flask的基础库
from flask import Flask, abort, request, JSONify, g, url_for
#Flaks的数据库操作的库
from flask.ext.sqlalchemy import SQLAlchemy
#Flask登录注册的库
from flask.ext.Httpauth import HTTPBasicAuth
#加密解密密码的库
from passlib.apps import custom_app_context as pwd_context
#URL安全序列化工具
from itsdangerous import (TimedjsONWEBSignatureSerializer
             as Serializer, BadSignature, SignatureExpired)

首先当然是初始化


app = Flask(__name__)
# 设置密钥
app.config['SECRET_KEY'] = 'the quick brown fox jumps over the lazy dog'
# 数据库的配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

#数据库初始化
db = SQLAlchemy(app)
# 验证的初始化
auth = HTTPBasicAuth()

然后是建模

SQLAlchemy是ORM模型操作数据库的,所以是非常的方便
除了基本的属性之后我们我定义了一些必要的方法


class User(db.Model):
  __tablename__ = 'users'
  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String(32), index=True)
  passWord_hash = db.Column(db.String(64))
  # 加密密码
  def hash_password(self, password):
    self.password_hash = pwd_context.encrypt(password)
  # 验证密码
  def verify_password(self, password):
    return pwd_context.verify(password, self.password_hash)
  # 生成token,并设置过期时间
  def generate_auth_token(self, expiration=600):
    s = Serializer(app.config['SECRET_KEY'], expires_in=expiration)
    return s.dumps({'id': self.id})
  # 静态的验证token的方法
  @staticmethod
  def verify_auth_token(token):
    s = Serializer(app.config['SECRET_KEY'])
    try:
      data = s.loads(token)
    except SignatureExpired:
      return None  # token过期
    except BadSignature:
      return None  # token无效
    user = User.query.get(data['id'])
    return user

注册功能


@app.route('/api/users', methods=['POST'])
def new_user():
  username = request.json.get('username')
  password = request.json.get('password')
  if username is None or password is None:
    abort(400)  # 用户名或者密码为空
  if User.query.filter_by(username=username).first() is not None:
    abort(400)  # 用户已存在
  user = User(username=username)
  # 加密密码
  user.hash_password(password)
  # 保存进数据库
  db.session.add(user)
  db.session.commit()
  # 成功注册后返回用户名,Location后面接着的是跳转的地址
  return (jsonify({'username': user.username}), 201,
      {'Location': url_for('get_user', id=user.id, _external=True)})

登录功能


# 登录后获取token
@app.route('/api/token')
@auth.login_required
def get_auth_token():
  # 设置token过期时间
  token = g.user.generate_auth_token(600)
  return jsonify({'token': token.decode('ascii'), 'duration': 600})

获取token后之后,每次请求只需传token就好了

我们可以通过一个方法验证token是否有效


# 可以通过token或者账号密码登录
@app.route('/api/resource')
@auth.login_required
def get_resource():
  # 如果token有效的话就返回username
  return jsonify({'data': 'Hello, %s!' % g.user.username})

细心的人会发现上面这两个方法前都带有@auth.login_required,这其实就是奥妙之处


# 有@auth.login_required标志的都要调用这个方法,传token或者传账号和密码
@auth.verify_password
def verify_password(username_or_token, password):
  # 首先验证token
  user = User.verify_auth_token(username_or_token)
  if not user:
    # 然后再验证用户名和密码
    user = User.query.filter_by(username=username_or_token).first()
    if not user or not user.verify_password(password):
      return False
  g.user = user
  return True

最后写一个入口方法


if __name__ == '__main__':
  # 如果这个数据库不存在就创建
  if not os.path.exists('db.sqlite'):
    db.create_all()
  app.run(debug=True)

这样就大功告成了

效果图

注册

查看图片

登录

查看图片

验证token

查看图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Python制作简易注册登录系统

本文链接: https://www.lsjlt.com/news/13904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Unity利用XML制作一个简易的登录系统
    通过XML文件保存账号密码,存储到本地,不连接数据库的简易登录系统。 1.创建一个XML文件,设置一个初始的账号密码。 public void Creat() { ...
    99+
    2024-04-02
  • JavaScript实现简易登录注册页面
    本文实例为大家分享了JavaScript实现简易登录注册页面的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html>   <h...
    99+
    2024-04-02
  • python 容器 用户注册登录系统
    1. 列表和普通变量有什么区别  列表是数据类型,普通变量是用来存储数据的  可以把列表赋值给普通变量 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44  a.append(44)  或者  a.ins...
    99+
    2023-01-30
    用户注册 容器 系统
  • JavaScript如何实现简易登录注册页面
    小编给大家分享一下JavaScript如何实现简易登录注册页面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下<!DOCTYPE htm...
    99+
    2023-06-26
  • AndroidStudio实现简易登录界面制作
    想要制作一个简易的登录界面非常容易,总体上来说就是UI布局、给定id、新建跳转的页面、以及输入账号密码的获取与判断,那么接下来就开始制作吧! 1.首先就是Activity中的组件布...
    99+
    2024-04-02
  • java实现注册登录系统
    本文实例为大家分享了java实现注册登录系统的具体代码,供大家参考,具体内容如下 1、创建菜单,注册,登录,退出 2、注册模块: a) 通过键盘输入用户名,密码b) 保存用户名密码到...
    99+
    2024-04-02
  • 【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP
    目录 第一部分、前言 1、目标效果 2、准备知识 第二部分、详细步骤 1、新建Empty工程 ​2、添加资源文件 3、搭建注册界面 4、搭建登录界面  5、编写注册界面和登录界面的代码 6、设置APP初始界面 7、连接手机,编译工程 第三部...
    99+
    2023-09-21
    android studio android
  • android实现简易登录注册界面及逻辑设计
    本文实例为大家分享了android实现登录注册界面及逻辑设计,供大家参考,具体内容如下 1. 第一步 新建文件(相信各位码农一定会这一步)略。 2. 第二步 登录注册界面设计 登录界...
    99+
    2024-04-02
  • Python+Tkinter简单实现注册登录功能
    本文实例为大家分享了Python+Tkinter简单实现注册登录功能的具体代码,供大家参考,具体内容如下 项目结构: 源代码: # -*- coding: utf-8 -*...
    99+
    2024-04-02
  • 一个注册、登录系统的实现
    github:https://github.com/BgirlStar/lazyDemo功能需求:该项目主要实现了前台用户登录注册以及显示用户所有注册信息的功能,后台数据库的比对数据修改添加查询功能。开发工...
    99+
    2024-04-02
  • java如何实现注册登录系统
    本篇内容介绍了“java如何实现注册登录系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、创建菜单,注册,登录,退出2、注册模块:a) ...
    99+
    2023-06-30
  • python 实战 登录注册
    #!/usr/bin/env python #coding:utf-8 fo=open("user.txt") ''' num=1 while True:         line=fo.readline() #       print r...
    99+
    2023-01-31
    实战 python
  • php如何实现简单注册登陆系统
    今天小编给大家分享一下php如何实现简单注册登陆系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、注册系统1、需求分析在...
    99+
    2023-07-05
  • 易语言怎么做MySQL注册和登录
    具体方法如下:如果登录用户名编辑框.内容≠“”且登录密码编辑框内容≠“” )查询用户名语句=“ SELECT username FROM user HERE username =’”+登录用户名编辑框.内容+“'”查询密码语句=“S...
    99+
    2024-04-02
  • 基于python制作简易版学生信息管理系统
    目录一、前言二、需求分析三、主函数四、功能菜单五、录入信息六、保存信息七、查找信息八、删除信息九、修改信息十、显示信息十一、按成绩排序十二、统计人数十三、最后记得运行主函数十四、将程...
    99+
    2024-04-02
  • 【Unity+MySQL】实现注册登录系统(升级版)
    目录 1 UI界面重新设计1.1 注册界面1.2 登录界面1.3 交互实现 2 注册功能完善2.1 判断用户输入的用户名是否与数据库中的重复2.2 将当前时间更新至用户表的当前注册时间列2...
    99+
    2023-10-08
    unity mysql 数据库
  • node.js实现简单登录注册功能
    本文实例为大家分享了node.js实现简单登录注册的具体代码,供大家参考,具体内容如下 1、首先需要一个sever模块用于引入路由,引入连接数据库的模块,监听服务器2、要有model...
    99+
    2024-04-02
  • python3 简单登录,注册测试代码
    '''写个登录,注册的简单代码。只用来简单测试,实现简单功能,没有过多的条件判断。仅仅用来练习。'''def login(username,password):'''db这个文件的路径是当前目录打开保存账号密码的文件,将文件中的账号密码读出...
    99+
    2023-01-31
    代码 简单 测试
  • Java Swing 简单的登录注册窗口
    前言 最近在学习Java Swing 写了一个简单的登录注册窗口, 该项目包含了对JFrame的创建,和一些组件的练习并且加入了简单的事件监听和简单的用户名密码判断。 登录和注册的页面只画出来了没有进行其他的组件添加 介绍 1,Swing是...
    99+
    2023-12-25
    java intellij-idea
  • Java怎么实现简单登录注册
    今天小编给大家分享一下Java怎么实现简单登录注册的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、登录1. 内容介绍定义一...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作