摘要:上一篇文章第二章實(shí)戰(zhàn)演練開(kāi)發(fā)網(wǎng)站第七節(jié)安全機(jī)制下一篇文章第二章實(shí)戰(zhàn)演練開(kāi)發(fā)網(wǎng)站第九節(jié)防止跨站攻擊在的類中有一個(gè)屬性用于保存當(dāng)前請(qǐng)求的用戶名。實(shí)例使用屬性及方法來(lái)實(shí)現(xiàn)用戶身份控制。該地址被用于裝飾器在發(fā)現(xiàn)用戶尚未驗(yàn)證時(shí)重定向到一個(gè)。
上一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開(kāi)發(fā)Tornado網(wǎng)站:第七節(jié):安全Cookie機(jī)制
下一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開(kāi)發(fā)Tornado網(wǎng)站:第九節(jié):防止跨站攻擊
在Tornado的RequestHandler類中有一個(gè)current_user屬性用于保存當(dāng)前請(qǐng)求的用戶名。RequestHandler.get_current_user的默認(rèn)值是None,在get()、post()等處理函數(shù)中可以隨時(shí)讀取該屬性以獲取當(dāng)前的用戶名。RequestHandler.current_user是一個(gè)只讀屬性,所以如果想要設(shè)置該屬性值,需要重載RequestHandler.get_current_user()函數(shù)以設(shè)置該屬性值。
代碼:
import tornado.web import tornado.ioloop import uuid #UUID 生成庫(kù) dict_sessions={} #保存所有登錄的Session class BaseHandler(tornado.web.RequestHandler): #公共基類 #寫(xiě)入current_user的函數(shù) 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 #需要身份認(rèn)證才能訪問(wèn)的處理器 def get(self): name=tornado.escape.xhtml_escape(self.current_user) self.write("Hello,"+name) class LoginHandler(BaseHandler): def get(self): #登陸頁(yè)面 self.write("<>body" "