繼續flask的學習之旅。今天介紹flask的登陸管理模塊,還記得上一篇中的blog小項目么,登錄是咱們自己寫的驗證代碼,大概有以下幾個步驟:
1、在登錄框中輸入用戶名和密碼
2、flask view函數獲取用戶密碼,然后到數據庫中查詢該用戶信息,進行匹配
3、如果成功,就寫入session中,重定向到首頁
4、如果對于特定視圖,必須要登錄才能訪問,那么需要在每個視圖函數驗證session里是否存在該用戶。
今天繼續改造blog項目,介紹的flask-login模塊就是替我們來搞定這些業務相關度較少的公用功能,它可以幫助我們:
在會話中存儲當前活躍的用戶 ID,讓你能夠自由地登入和登出。
讓你限制登入(或者登出)用戶可以訪問的視圖。
處理讓人棘手的 “記住我” 功能。
幫助你保護用戶會話免遭 cookie 被盜的牽連。
可以與以后可能使用的 Flask-Principal 或其它認證擴展集成。
一、如何使用flask-login模塊?
1、安裝flask-login
E:/workdir/dct-server-5055187/src>pip install flask-login
2、使用flask-login
2.1) 在/blog2/__init__.py添加:
#引用包from flask.ext.login import LoginManager#登陸管理#聲明login對象login_manager = LoginManager()#初始化綁定到應用login_manager.init_app(app)#聲明默認視圖函數為login,當我們進行@require_login時,如果沒登陸會自動跳到該視圖函數處理login_manager.login_view = "login"#當登陸成功后,該函數會自動從會話中存儲的用戶 ID 重新加載用戶對象。它應該接受一個用戶的 unicode ID 作為參數,并且返回相應的用戶對象。@login_manager.user_loaderdef load_user(userid):return User.query.get(int(userid))
2.2) 修改User模型(紅色部分為新增代碼)
from flask.ext.login import UserMixinfrom blog2 import dbclass User(db.Model, UserMixin): __tablename__ = 'b_user' id = db.Column(db.Integer,primary_key=True) username = db.Column(db.String(10),unique=True) password = db.Column(db.String(16)) def __init__(self,username,password): self.username = username self.password = password def __repr__(self): return '<User %r>' % self.username
該用戶類必須實現以下幾個方法:
is_authenticated
當用戶通過驗證時,也即提供有效證明時返回 True(只有通過驗證的用戶會滿足 login_required 的條件。)
is_active
如果這是一個活動用戶且通過驗證,賬戶也已激活,未被停用,也不符合任何你 的應用拒絕一個賬號的條件,返回 True 。不活動的賬號可能不會登入(當然, 是在沒被強制的情況下)。
is_anonymous
新聞熱點
疑難解答