国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python:Tornado 第二章:實戰演練:開發Tornado網站:第八節:用戶身份認證

Kahn / 3446人閱讀

摘要:上一篇文章第二章實戰演練開發網站第七節安全機制下一篇文章第二章實戰演練開發網站第九節防止跨站攻擊在的類中有一個屬性用于保存當前請求的用戶名。實例使用屬性及方法來實現用戶身份控制。該地址被用于裝飾器在發現用戶尚未驗證時重定向到一個。

上一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第七節:安全Cookie機制
下一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第九節:防止跨站攻擊

在Tornado的RequestHandler類中有一個current_user屬性用于保存當前請求的用戶名。RequestHandler.get_current_user的默認值是None,在get()、post()等處理函數中可以隨時讀取該屬性以獲取當前的用戶名。RequestHandler.current_user是一個只讀屬性,所以如果想要設置該屬性值,需要重載RequestHandler.get_current_user()函數以設置該屬性值。

實例:使用RequestHandler.current_user屬性及RequestHandler.get_current_user()方法來實現用戶身份控制。

代碼:

import tornado.web
import tornado.ioloop
import uuid  #UUID 生成庫

dict_sessions={}  #保存所有登錄的Session

class BaseHandler(tornado.web.RequestHandler):  #公共基類
    #寫入current_user的函數
    def get_current_user(self):
        session_id=self.get_secure_cookie("session_id")
        return dict_sessions.get(session_id)

class MainHandler(BaseHandler):
    @tornado.web.authenticated    #需要身份認證才能訪問的處理器
    def get(self):
        name=tornado.escape.xhtml_escape(self.current_user)
        self.write("Hello,"+name)

class LoginHandler(BaseHandler):
    def get(self):   #登陸頁面
        self.write("<>body"
                   "
" "Name:" "" "
") def post(self): #驗證是否運行登陸 if len(self.get_argument("name"))<3: self.redirect("/login") session_id=str(uuid.uuid1()) dict_sessions[session_id]=self.get_argument("name") self.set_secure_cookie("session_id",session_id) self.redirect("/") setting={ "cookie_secret":"SECRET_DONT_LEAK", #Cookie加密秘鑰 "login_url":"/login" #定義登陸頁面 } application=tornado.web.Application([ (r"/",MainHandler), #URL映射定義 (r"/login",LoginHandler) ],**setting) def main(): application.listen(8888) tornado.ioloop.IOLoop.current().start() #掛起監聽 if __name__ == "__main__": main()

本例演示了一個完整的身份認證編程框架,整體構思如下:

用全局字典dict_sessions保存已經登錄的用戶信息,為了簡單些,本例只保存了【回話ID:用戶名】的鍵值對。

定義公共基類BaseHandler,該類繼承自tornado.web.RequestHandler,用于定義本網站所有處理器的公共屬性和行為。重載它的get_current_user()函數,其在訪問RequestHandler.current_user屬性時自動被Tornado調用。該函數首先用get_secure_cookie()獲得本次訪問的回話ID,然后利用該ID從dict_sessions中獲得用戶名并且返回。

MainHandler類是一個要求用戶經過身份認證才能訪問的處理器實例。該處理器中的處理函數get()使用了裝飾器tornado.web.authenticated,具有該裝飾器的處理函數在執行之前根據current_user是否已經被賦值來判斷用戶的身份認證情況,如果已經被賦值則可以進行正常邏輯,否則自動重定向到網站的登錄頁面。

LoginHandler類是登錄頁面處理器,其get()函數用于渲染登錄頁面,post()函數用于驗證是否允許用戶登陸。

在tornado.web.Application的初始化函數中通過login_url參數給出網站的登陸頁面地址。該地址被用于tornado.web.authenticated裝飾器在發現用戶尚未驗證時重定向到一個URL。

注意:加入身份認證的所有頁面處理器需要繼承自BaseHandler類,而不是直接繼承原來的tornado.web.RequestHandler類。

商用的身份認證還要完善更多的內容,比如加入密碼驗證機制、管理登陸超時、將用戶信息保存到數據庫等。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42616.html

相關文章

  • PythonTornado 二章實戰演練開發Tornado網站:第七節:安全Cookie機制

    摘要:上一篇文章第二章實戰演練開發網站第六節異步與協程化下一篇文章第二章實戰演練開發網站第八節用戶身份認證是很多網站為了辨別用戶的身份而存儲在用戶本地終端的數據,在中使用可以方便地對進行讀寫。 上一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第六節:異步與協程化下一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第八節:用戶...

    dmlllll 評論0 收藏0
  • PythonTornado 二章實戰演練開發Tornado網站:第九節:防止跨站攻擊

    摘要:上一篇文章第二章實戰演練開發網站第八節用戶身份認證下一篇文章第三章概念及應用第一節概念跨站請求偽造,或是一種對網站的惡意利用。其中是存在漏洞的網站,而是存在攻擊行為的惡意網站。 上一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第八節:用戶身份認證下一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應用:第一節:Web...

    Zoom 評論0 收藏0
  • PythonTornado 二章實戰演練開發Tornado網站:第六節:異步與協程化

    摘要:上一篇文章第二章實戰演練開發網站第五節輸出相應函數下一篇文章第二章實戰演練開發網站第七節安全機制有兩種方式可改變同步的處理流程異步化針對的處理函數使用修飾器,將默認的同步機制改為異步機制。使用異步對象處理耗時操作,比如本例的。 上一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第五節:RequestHandler:輸出相應函數下一篇文章:Python:...

    cod7ce 評論0 收藏0
  • PythonTornado 二章實戰演練開發Tornado網站第二節:路由解析

    摘要:上一篇文章第二章實戰演練開發網站第一節網站結構下一篇文章第二章實戰演練開發網站第三節接入點函數向對象傳遞的第個參數路由映射列表的配置方式與類型,用正則字符串進行路由匹配。實例參數路徑在瀏覽器輸入頁面輸出其中的是正在表達式。 上一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第一節:網站結構:HelloWorld下一篇文章:Python:Tornado ...

    cppprimer 評論0 收藏0
  • PythonTornado 二章實戰演練開發Tornado網站:第一節:網站結構:Hello

    摘要:上一篇文章第一章異步及協程基礎第三節協程下一篇文章第二章實戰演練開發網站第二節網站結構路由解析實例瀏覽器輸入鏈接頁面顯示下面逐行解析上面的代碼做了些什么首先通過語句引入包中的和類。該對象的第一個餐食用于定義程序的路由映射。 上一篇文章:Python:Tornado 第一章:異步及協程基礎:第三節:協程下一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第...

    Taonce 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<