使用 Django 中的 csrf 處理

Django中有一個(gè)django.middleware.csrf.CsrfViewMiddleware中間件提供了全局的csrf檢查长豁。它的原理是在<form>標(biāo)簽中生成一個(gè)隱藏的<input>標(biāo)簽谴供,提交表單時(shí)將這個(gè)隱藏的<input>一起提交汰现,服務(wù)器端驗(yàn)證這個(gè)字段是否正確算利。

官方給出的csrf的操作步驟是:

  1. MIDDLEWARE_CLASSES中添加django.middleware.csrf.CsrfViewMiddleware,開啟全局csrf保護(hù)戚扳。
  2. 對(duì)于POST至站內(nèi)的表單么翰,在模板中的<form>標(biāo)簽內(nèi)添加{% csrf_token %}模板標(biāo)簽。
  3. 在對(duì)應(yīng)的視圖函數(shù)中確保使用django.template.context_processors.csrfContext處理器暴心。實(shí)現(xiàn)方式有兩種:
    (1). 使用RequestContext或者直接使用通用視圖妓盲,它們會(huì)自動(dòng)將csrf_token添加至模板上下文中。
    return render_to_response("xxx.html", context_instance=RequestContext(request))
    (2). 手工導(dǎo)入并使用處理器來(lái)生成CSRF token专普,并將它添加到模板上下文中悯衬。例如:
    from django.shortcuts import render_to_response
    from django.template.context_processors import csrf
    def my_view(request):
    c = {}
    c.update(csrf(request))
    # ... view code here
    return render_to_response("a_template.html", c)

但是,手工導(dǎo)入麻煩而且會(huì)使代碼變得難以維護(hù)檀夹,使用RequestContext也沒好到哪去筋粗, 并且在Django 1.8 的文檔中說(shuō)明context_instance 1.8 之后會(huì)被廢棄。
那我們應(yīng)該如何處理csrf_token呢炸渡?其實(shí)娜亿,Django提供了一個(gè)快捷函數(shù)可以處理這個(gè)問(wèn)題。
django.shortcuts.render在內(nèi)部設(shè)定context_instance缺省是RequestContext的一個(gè)實(shí)例蚌堵。調(diào)用render便可以自動(dòng)將csrf_token添加至上下文中买决。


網(wǎng)上有一些博客說(shuō)可以在settings中設(shè)置TEMPLATE_CONTEXT_PROCESSORS實(shí)現(xiàn)全局的csrf_token填充至上下文。
但是我實(shí)驗(yàn)后發(fā)現(xiàn)并不好使吼畏,如果有朋友知道原因的話督赤,還望告知。

我在settings中是這樣設(shè)置的:

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (    
    'django.core.context_processors.csrf',
)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泻蚊,一起剝皮案震驚了整個(gè)濱河市躲舌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌性雄,老刑警劉巖没卸,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秒旋,居然都是意外死亡约计,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門滩褥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人炫加,你說(shuō)我怎么就攤上這事瑰煎∑倘唬” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵酒甸,是天一觀的道長(zhǎng)魄健。 經(jīng)常有香客問(wèn)我,道長(zhǎng)插勤,這世上最難降的妖魔是什么沽瘦? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮农尖,結(jié)果婚禮上析恋,老公的妹妹穿的比我還像新娘。我一直安慰自己盛卡,他們只是感情好助隧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滑沧,像睡著了一般并村。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滓技,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天哩牍,我揣著相機(jī)與錄音,去河邊找鬼令漂。 笑死膝昆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洗显。 我是一名探鬼主播外潜,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挠唆!你這毒婦竟也來(lái)了处窥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玄组,失蹤者是張志新(化名)和其女友劉穎滔驾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俄讹,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哆致,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了患膛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摊阀。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胞此,到底是詐尸還是另有隱情臣咖,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布漱牵,位于F島的核電站夺蛇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酣胀。R本人自食惡果不足惜刁赦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闻镶。 院中可真熱鬧甚脉,春花似錦、人聲如沸儒溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顿涣。三九已至波闹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涛碑,已是汗流浹背精堕。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒲障,地道東北人歹篓。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像揉阎,于是被迫代替她去往敵國(guó)和親庄撮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容