代码怎么生成网站,wordpress 标题换行,做详情页上什么网站找素材,图库网址大全Flask-Login 是 Flask 的用户管理扩展#xff0c;提供 用户身份验证、会话管理、权限控制 等功能。
适用于#xff1a;
• 用户登录、登出
• 记住用户#xff08;“记住我” 功能#xff09;
• 限制未登录用户访问某些页面
• 用户会话管理 1. 安装 Flask-Login
pi…Flask-Login 是 Flask 的用户管理扩展提供 用户身份验证、会话管理、权限控制 等功能。
适用于
• 用户登录、登出
• 记住用户“记住我” 功能
• 限制未登录用户访问某些页面
• 用户会话管理 1. 安装 Flask-Login
pip install flask-login flask-sqlalchemy main.py
from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_userapp Flask(__name__)# 配置 Flask 和数据库
app.config[SQLALCHEMY_DATABASE_URI] sqlite:///users.db # 使用 SQLite 数据库
app.config[SECRET_KEY] your_secret_key # Flask-Login 需要 secret key
db SQLAlchemy(app)
login_manager LoginManager(app)# 定义用户模型
class User(UserMixin, db.Model): # UserMixin 提供 Flask-Login 必需的方法id db.Column(db.Integer, primary_keyTrue)username db.Column(db.String(100), uniqueTrue, nullableFalse)password db.Column(db.String(200), nullableFalse) # 真实应用需加密密码# 创建数据库表仅需运行一次
with app.app_context():db.create_all()# Flask-Login 加载用户的回调函数
login_manager.user_loader
def load_user(user_id):return User.query.get(int(user_id)) # 通过 ID 获取用户app.route(/register, methods[GET, POST])
def register():if request.method POST:username request.form.get(username)password request.form.get(password)if not username or not password:flash(用户名和密码不能为空)return redirect(url_for(register))# 检查用户是否已存在existing_user User.query.filter_by(usernameusername).first()if existing_user:flash(用户名已存在请选择其他用户名)return redirect(url_for(register))# 创建新用户并保存到数据库new_user User(usernameusername, passwordpassword) # 这里应加密密码db.session.add(new_user)db.session.commit()flash(注册成功请登录)return redirect(url_for(login))return render_template(register.html)app.route(/login, methods[GET, POST])
def login():if request.method POST:username request.form.get(username)password request.form.get(password)# 查找用户user User.query.filter_by(usernameusername).first()if user and user.password password: # 这里应使用加密密码验证login_user(user) # 登录用户flash(登录成功)return redirect(url_for(dashboard))flash(用户名或密码错误)return redirect(url_for(login))return render_template(login.html)app.route(/dashboard)
login_required # 保护此路由未登录用户无法访问
def dashboard():return f欢迎 {current_user.username}这是您的仪表盘。 a href/logout登出/aapp.route(/logout)
login_required
def logout():logout_user()flash(您已成功退出)return redirect(url_for(login))if __name__ __main__:app.run(debugTrue)templates/login.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
form methodpostlabel用户名:/labelinput typetext nameusername requiredlabel密码:/labelinput typepassword namepassword requiredbutton typesubmit登录/button
/form
/body
/html templates/register.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyform methodpostlabel用户名:/labelinput typetext nameusername requiredlabel密码:/labelinput typepassword namepassword requiredbutton typesubmit注册/button/form
/body
/html
运行然后访问
• 注册http://127.0.0.1:5000/register
• 登录http://127.0.0.1:5000/login
• 仪表盘必须登录http://127.0.0.1:5000/dashboard
• 登出http://127.0.0.1:5000/logout