Flask(2) 登陸驗證

2022-05-09 22:35:08 字數 3137 閱讀 6887

裝飾器補充:

import

functools

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

class

developmentconfig(object):

secret_key = "

vnasioeyh"#

session相關(加鹽加密)

login_verification.py

from flask import

flask, 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 向資料庫中查詢出使用者 ...