Flask-登录之falsk-login

本文介绍了如何在Flask应用中实现页面鉴权,通过Flask-Login库来管理用户登录状态。首先介绍了系统环境和所需的依赖包,然后展示了登录和登录后页面的示例。接着详细讲解了配置app.py文件,包括设置密钥、ORM配置、用户模型、创建和管理用户、登录及登出功能。最后提供了完整的app.py代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

flask如何将部分页面鉴权后才能访问,笔者通过Flask-login实现,下面一起来看看是如何实现的吧。

系统环境

  • win-11
  • python 3.8

依赖安装

pip install flask
pip install flask-login
pip install flask-sqlalchemy
pip install sqlalchemy-utils
pip install click
pip install Werkzeug

页面展示

登录页面

在这里插入图片描述

登陆后页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CAzveLC5-1660818099443)(picture/Pasted%20image%2020220818180222.png)]

导入bootstrap依赖 和 html页面

# 新一个文件夹
# 新文件夹下创建staice文件夹用于存放bootstrap依赖,文件夹下再创建三个文件夹为:css、js、images
# 新文件夹下创建templates文件夹用于存放html文件
# 相关文件请通过云盘下载

# 文件目录结构
├─static
│  ├─css
│  ├─images
│  └─js
├─templates

配置app.py文件

导入相关模块,定义secrets 并配置ORM

from flask import Flask, render_template, request, redirect, url_for, flash  
from flask_sqlalchemy import SQLAlchemy  
from werkzeug.security import generate_password_hash, check_password_hash  
from flask_login import LoginManager, login_user, login_required, logout_user, UserMixin  
import sqlalchemy_utils  
import os  
import sys  
import click 
  
app = Flask(__name__)  

'''
自动生成secret
import secrets  
print(secrets.token_hex(32))
'''
app.secret_key = b'12313123131241414141241fsfgsfsdfsfs'  
  
# 判断系统类型  
WIN = sys.platform.startswith('win')  
if WIN:  # 如果是 Windows 系统,使用三个斜线  
    prefix = 'sqlite:///'  
else:  # 否则使用四个斜线  
    prefix = 'sqlite:'  
  
# sqlite:///数据库文件的绝对地址,如果你使用 Windows 系统只需要写入三个斜线(即 sqlite:///)  
app.config['SQLALCHEMY_DATABASE_URI'] = prefix + os.path.join(app.root_path, 'data.db')  
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 关闭对模型修改的监控  
db = SQLAlchemy(app)  
login_manager = LoginManager(app)  
login_manager.login_view = 'login'  
  
  
class User(db.Model, UserMixin):  
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  
    user_type = db.Column(db.String(255))  
    username = db.Column(db.String(255))  
    password_hash = db.Column(db.String(128))  # 密码散列值  
  
    def set_password(self, password):  # 用来设置密码的方法,接受密码作为参数  
        self.password_hash = generate_password_hash(password)  # 将生成的密码保持到对应字段  
  
    def validate_password(self, password):  # 用于验证密码的方法,接受密码作为参数  
        return check_password_hash(self.password_hash, password)  # 返回布尔值  

定义手动创建管理用户模块

# 使用 click.option() 装饰器设置的两个选项分别用来接受输入用户名和密码。执行 flask admin 命令,输入用户名和密码后,即可创建管理员账户。  
@app.cli.command()  
&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值