摘要:原文地址在中實(shí)際上是提供了基礎(chǔ)認(rèn)證的我們可以通過如下的方式進(jìn)行導(dǎo)入而在中將安全系統(tǒng)拆分為認(rèn)證和權(quán)限。這里我們來看下最簡單的基礎(chǔ)認(rèn)證。如果是自定義認(rèn)證類我們是可以在失敗的時候返回的對于系統(tǒng)內(nèi)建的基礎(chǔ)認(rèn)證類我們在回調(diào)時只能返回。
原文地址:
http://52sox.com/pyramid-basi...
在Pyramid中實(shí)際上是提供了基礎(chǔ)認(rèn)證的,我們可以通過如下的方式進(jìn)行導(dǎo)入:
from pyramid.authentication import BasicAuthAuthenticationPolicy
而在Pyramid中,將安全系統(tǒng)拆分為認(rèn)證和權(quán)限。這里我們來看下最簡單的HTTP基礎(chǔ)認(rèn)證(BasicAuth Authentication)。
對于第1次使用Pyramid的人來說,會覺得這個框架很復(fù)雜,當(dāng)然這話是相當(dāng)于使用Django、Flask這樣的開發(fā)人員來說的。
在Pyramid中,我們無法多帶帶使用認(rèn)證,其需要提供1個權(quán)限類一起使用,這里我們導(dǎo)入ACL這個權(quán)限控制類:
from pyramid.authorization import ACLAuthorizationPolicy
下面我們來看下完整的代碼:
from pyramid.authentication import BasicAuthAuthenticationPolicy from pyramid.authorization import ACLAuthorizationPolicy from pyramid.config import Configurator from pyramid.httpexceptions import HTTPUnauthorized from pyramid.view import view_config from wsgiref.simple_server import make_server @view_config(name="",renderer="json") def index(request): realm = "You must tell me your measurements or I know you are an adult" if not req.authenticated_userid: return HTTPUnauthorized(headers=[("WWW-Authenticate", "Basic realm="%s"" % realm)]) return {"data":"some data require authenticated."} def callback(username,pwd,req): users = { "zhangsan":"123456", "lisi":"111111", "wangwu":"888888" } passwd = users.get(username) if passwd == pwd: return True return None
通過這么近20行的代碼,我們已經(jīng)實(shí)現(xiàn)了1個簡單的HTTP版本的基礎(chǔ)認(rèn)證。在這里,當(dāng)認(rèn)證不通過的時候,我們需要在響應(yīng)頭中返回WWW-Authenticate才會出現(xiàn)類似如下的界面:
然后接下來是配置的部分了:
config = Configurator() basic_policy = BasicAuthAuthenticationPolicy(callback) auth_polocy = ACLAuthorizationPolicy() config.set_authentication_policy(basic_policy) config.set_authorization_policy(auth_polocy) config.scan() app = config.make_wsgi_app() server = make_server("127.0.0.1",8000,app) server.serve_forever()
在這里我們通過實(shí)例化Configurator生成1個配置對象。然后我們通過set_authentication_policy和set_authorization_policy方法分別設(shè)置認(rèn)證策略和權(quán)限策略。
在Pyramid中,wsgi應(yīng)用是通過配置對象的make_wsgi_app方法生成的。
需要注意的是,在這里,我們在BasicAuthAuthenticationPolicy類中傳入了1個函數(shù)的名稱,用于回調(diào)處理來判斷其認(rèn)證是否成功。如果是自定義認(rèn)證類,我們是可以在失敗的時候返回False的,對于系統(tǒng)內(nèi)建的基礎(chǔ)認(rèn)證類,我們在回調(diào)時只能返回None。
上述的寫法只是Pyramid中的1種方式,我們還可以通過其他的方式來實(shí)現(xiàn)相同的效果。雖然,第1次使用pyramid的時候,會覺得不怎么順手,但是隨著深入學(xué)習(xí),你會發(fā)現(xiàn)Pyramid其實(shí)還是挺靈活的,只是相比Flask、Django這樣的框架要寫的代碼會更多一些。
最后,在實(shí)例化BasicAuthAuthenticationPolicy類時,我們還可以傳入?yún)?shù)debug來開啟這個認(rèn)證類的調(diào)試,其結(jié)果將記錄到日志中。
參考文章:
http://docs.pylonsproject.org...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44224.html
摘要:它有什么圖表加粗文字如何使用這個圖表庫可以通過存儲庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計,提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個JavaScript圖表庫將與一些關(guān)鍵...
摘要:它有什么圖表加粗文字如何使用這個圖表庫可以通過存儲庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計,提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個JavaScript圖表庫將與一些關(guān)鍵...
摘要:它有什么圖表加粗文字如何使用這個圖表庫可以通過存儲庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計,提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個JavaScript圖表庫將與一些關(guān)鍵...
摘要:https://www.creativebloq.com/css3/20-stunning-examples-css-3d-transforms-11112759 https://github.com/fofr/paulrhayes.com-experiments Experiment: A tetrahedron built with CSS 3D transform...
摘要:說明使用可以繪制出許多形狀,比如三角形梯形圓形橢圓,等并不只是可以繪制矩形。前面后面左面右面下面查看示例總結(jié)文中實(shí)現(xiàn)的各種形狀,也許你覺得實(shí)現(xiàn)的很復(fù)雜,其實(shí)你也可以使用這一個屬性,繪制各種形狀。 說明 使用 CSS 可以繪制出許多形狀,比如三角形、梯形、圓形、橢圓,等 并不只是可以繪制矩形。下面來看看怎么實(shí)現(xiàn)這些形狀的吧。為了容易理解,文章分為基本形狀 和 組合形狀來說,基本形狀是比較...
閱讀 2678·2021-11-25 09:43
閱讀 2590·2021-11-22 09:34
閱讀 2860·2021-11-12 10:34
閱讀 1447·2021-10-20 13:46
閱讀 2308·2019-08-30 13:21
閱讀 938·2019-08-30 11:21
閱讀 492·2019-08-30 11:20
閱讀 2196·2019-08-29 17:20