Flask-login không thực sự có chương trình phụ trợ người dùng, nó chỉ xử lý bộ máy phiên để giúp bạn đăng nhập và đăng xuất người dùng. Bạn phải cho nó biết (bằng các phương pháp trang trí), điều gì đại diện cho người dùng và bạn cũng phải tìm ra cách để biết liệu người dùng có "đang hoạt động" hay không (vì "hoạt động" có thể có nghĩa khác nhau trong các ứng dụng khác nhau ).
Bạn nên đọc tài liệu và chắc chắn những gì nó làm được và không làm . Ở đây tôi sẽ chỉ tập trung vào việc kết nối nó với chương trình phụ trợ db.
Để bắt đầu, hãy xác định một đối tượng người dùng; đại diện cho các thuộc tính cho người dùng của bạn. Đối tượng này sau đó có thể truy vấn cơ sở dữ liệu hoặc LDAP hoặc bất cứ thứ gì và nó là móc nối kết nối cơ chế đăng nhập với phần phụ trợ cơ sở dữ liệu của bạn.
Tôi sẽ sử dụng ví dụ đăng nhập tập lệnh cho mục đích này.
class User(UserMixin):
def __init__(self, name, id, active=True):
self.name = name
self.id = id
self.active = active
def is_active(self):
# Here you should write whatever the code is
# that checks the database if your user is active
return self.active
def is_anonymous(self):
return False
def is_authenticated(self):
return True
Khi bạn đã tạo đối tượng người dùng, bạn cần viết một phương thức tải người dùng (về cơ bản, tạo một phiên bản của User
lớp từ khá trở lên). Phương thức này được gọi với id người dùng.
@login_manager.user_loader
def load_user(id):
# 1. Fetch against the database a user by `id`
# 2. Create a new object of `User` class and return it.
u = DBUsers.query.get(id)
return User(u.name,u.id,u.active)
Khi bạn có các bước này, phương thức đăng nhập của bạn sẽ thực hiện điều này:
-
Kiểm tra xem tên người dùng và mật khẩu có khớp không (với cơ sở dữ liệu của bạn) - bạn cần tự viết mã này.
-
Nếu xác thực thành công, bạn nên chuyển một phiên bản của người dùng đến
login_user()