如果你想在不使用flask-sqlalchemy或其他ORM库的情况下实现flask-login,你可以手动处理数据库查询和用户验证的逻辑。下面是一个示例解决方法:
User类来表示用户模型。这个类可以包含用户的id、用户名、密码等信息。class User:
def __init__(self, id, username, password):
self.id = id
self.username = username
self.password = password
users = [
User(1, 'admin', 'password'),
User(2, 'user1', 'password'),
User(3, 'user2', 'password')
]
def get_user(username):
for user in users:
if user.username == username:
return user
return None
def authenticate(username, password):
user = get_user(username)
if user and user.password == password:
return user
return None
flask-login扩展来完成用户登录和认证的相关功能。from flask import Flask, request
from flask_login import LoginManager, login_user, login_required, logout_user
app = Flask(__name__)
app.secret_key = 'your_secret_key'
login_manager = LoginManager()
login_manager.init_app(app)
@login_manager.user_loader
def load_user(user_id):
for user in users:
if user.id == int(user_id):
return user
return None
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = authenticate(username, password)
if user:
login_user(user)
return 'Logged in successfully!'
return 'Invalid username or password'
return '''
'''
@app.route('/logout')
@login_required
def logout():
logout_user()
return 'Logged out successfully!'
@app.route('/profile')
@login_required
def profile():
return 'Profile page'
if __name__ == '__main__':
app.run()
这个示例代码中,我们手动实现了查询用户、验证用户密码、用户登录、用户登出等功能。然后,我们使用flask-login扩展来处理用户登录的相关逻辑。