裝飾器補充:
importfunctools
defauth(func):
@functools.wraps(func)
#作用:把原函式的原資訊封裝到 inner 中
def inner(*args,**kwargs):
ret = func(*args,**kwargs)
return
ret
return
inner
@auth
defindex():
print("
index")
#function.__name__ # 獲取函式名
print(index.__name__) #
沒加 functools.wraps 這個裝飾器的時候, index.__name__ 是 "inner";加了 functools.wraps 之後,index.__name__ 就是 "index"
登陸認證:
登陸認證:某些頁面只有登陸之後才能訪問
#方式一:
#在需要登陸認證的檢視函式中加上以下驗證**:
ifnot session.get("
user
"): #
獲取 session
return redirect("
/login")
#該方式的缺點:假如需要認證的檢視特別多,則需要在每個檢視中新增上述**
#方式二:
#利用自定義裝飾器
defauth(func):
def inner(*args,**kwargs):
#先判斷是否已經登陸過
ifnot session.get("
user
"): #
獲取 session
return redirect("
/login")
func(*args,**kwargs)
return
inner
#然後給需要認證的檢視加上上述裝飾器
#方式三:
#利用 before_request 裝飾器
defauth():
#如果是 "/login" 登陸路徑,則讓其繼續走下面的檢視函式
if request.path == "
/login
": #
request.path :獲取路徑
return
none
if session.get("
user
"): #
獲取 session
return
none
return redirect("
/login")
#
方式二的示例**:
settings.py
classdevelopmentconfig(object):
secret_key = "
vnasioeyh"#
session相關(加鹽加密)
login_verification.py
from flask importflask, request, render_template, redirect, session
import
functools)"
settings.developmentconfig
") #
設定配置檔案:settings.py 檔案中的 developmentconfig 這個類
defauth(func):
@functools.wraps(
func)
#加上該裝飾器的原因:以 index() 為例,經 auth 裝飾過的 index函式 是 inner,然後 inner函式和"/index"這個路徑繫結, 假如有好多檢視函式都加上了這個裝飾器,那麼 inner 函式就會和好多路徑繫結, flask就不知道你繫結的是哪乙個
def inner(*args, **kwargs):
#先判斷是否已經登陸過
ifnot session.get("
user
"): #
獲取 session
return redirect("
/login")
return func(*args, **kwargs)
return
inner
"/login
", methods=["
get", "
post"])
deflogin():
if request.method == "
get"
:
return render_template("
login.html")
username = request.form.get("
username")
password = request.form.get("
psw"
)
if username == "
neo"
and password == "
abc123":
session[
"user
"] = username #
設定 session
return redirect("
/index")
else
:
return render_template("
login.html
", error="
使用者名稱密碼錯誤
") #
傳遞引數也可用字典
"/index")
@auth
#def
index():
#登陸之後才能訪問 index 頁面
return render_template("
index.txt
") #
模板字尾不影
if__name__ == "
__main__
":
#
Flask 模組之登陸驗證
半個月了,我們已經對flask有了進一步的了解,大家都知道我們在做任何乙個小專案的時候都會有登陸和註冊,今天來給說說登陸頁面的基本驗證邏輯,話不多說,如下 簡單的導包我就不一 一枚舉 登陸頁面 userctrl.route sign in def signin return render templ...
flask之flask login登陸驗證(一)
這個模組能幫助我們做很多事,最常用到的是,登陸驗證 驗證當前使用者是否已經登陸 記住我功能 一 安裝 pip install flask login 二 匯入相關模組及物件並初始化 from flask login import login manager,usermixin login manag...
後台 登陸表單驗證2
判斷使用者輸入的驗證碼是否正確 如果輸入的驗證碼和session中的驗證碼不相等,重定向到使用者登陸介面,給錯誤提示資訊 strtolower 函式將驗證碼變成大寫字母 if strtolower input code strtolower session get code 向資料庫中查詢出使用者 ...