Python Flask學習_使用flask-login實現認證藍本(一)
阿新 • • 發佈:2019-02-08
藍本可以認為是一類路由的集合。一個Web App實現多個藍本的目的是,把不同的路由分開,便於維護。
再來複習一下,建立藍本。
1、在app包下建立新package,命名為auth。
2、建立藍本物件例項
# app/auth/__init__.py from flask import Blueprint #引入Blueprint類 auth = Blueprint('auth',__name__) #建立例項 from . import views #引入app/auth/views.py
3、實現檢視函式
# app/auth/views.py
@auth.route('/login')
def login():
return render_template('auth/login.html')
注意Flask認為模板的路徑是相對於程式模板資料夾而言的(即app/templates)。因此,render_template('auth/login.html')中的'auth/login.html'其實是auth/templates/auth/login.html
4、在app中註冊auth藍本
# app/__init__.py def create_app(config_name): #... from .auth import auth as auth_blueprint #引入藍本例項 app.rgister_blueprint(auth_blueprint,url_prefix='/auth') #註冊藍本到app return app
下面進入正文
Flask-Login是專門用來管理使用者認證系統中的認證狀態,且不依賴特定的認證機制。
使用前,還是老規矩安裝:
# pyCharm Terminal
pip install flask-login
一、準備用於登入的使用者模型
想要使用Flask-Login擴充套件,使用者模型(對應資料庫中的User表)必須實現的方法有:
但是,更簡單的方法是:使用flask_login.UserMixin類。UserMixin類有上述四個方法的預設實現,且能滿足大多數需求。
使用方法是。直接繼承就可以。
還記得,ORM的模型改了,要把更改提交到資料庫需要怎麼做嗎?
二、Flask-Login在程式工廠函式中初始化
from flask_login import LoginManager
login_manager = LoginManager() #建立例項
login_manager.session_protection = 'strong' #使用者認證的保護級別
login_manager.login_view = 'auth.login' #設定登入頁面的端點
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
#...
login_manager.init_app(app) #註冊到app
三、實現一個回撥函式
Flask-Login要求程式實現一個回撥函式,使用指定的識別符號載入使用者。
# app/models.py
from . import login_manager
@login_manager.user_loader #flask-login要求實現的回撥函式
def load_user(user_id):
return User.query.get(int(user_id))
回撥函式,接受以Unicode字串形式表示的使用者識別符號,在資料庫中用使用者識別符號查詢。如果能找到返回使用者物件,否則 返回None。