摘要:原文地址在中實(shí)際上是提供了基礎(chǔ)認(rèn)證的我們可以通過如下的方式進(jìn)行導(dǎo)入而在中將安全系統(tǒng)拆分為認(rèn)證和權(quán)限。這里我們來看下最簡單的基礎(chǔ)認(rèn)證。如果是自定義認(rèn)證類我們是可以在失敗的時(shí)候返回的對(duì)于系統(tǒng)內(nèi)建的基礎(chǔ)認(rèn)證類我們?cè)诨卣{(diào)時(shí)只能返回。
原文地址:
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)。
對(duì)于第1次使用Pyramid的人來說,會(huì)覺得這個(gè)框架很復(fù)雜,當(dāng)然這話是相當(dāng)于使用Django、Flask這樣的開發(fā)人員來說的。
在Pyramid中,我們無法多帶帶使用認(rèn)證,其需要提供1個(gè)權(quán)限類一起使用,這里我們導(dǎo)入ACL這個(gè)權(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個(gè)簡單的HTTP版本的基礎(chǔ)認(rèn)證。在這里,當(dāng)認(rèn)證不通過的時(shí)候,我們需要在響應(yīng)頭中返回WWW-Authenticate才會(huì)出現(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個(gè)配置對(duì)象。然后我們通過set_authentication_policy和set_authorization_policy方法分別設(shè)置認(rèn)證策略和權(quán)限策略。
在Pyramid中,wsgi應(yīng)用是通過配置對(duì)象的make_wsgi_app方法生成的。
需要注意的是,在這里,我們?cè)?b>BasicAuthAuthenticationPolicy類中傳入了1個(gè)函數(shù)的名稱,用于回調(diào)處理來判斷其認(rèn)證是否成功。如果是自定義認(rèn)證類,我們是可以在失敗的時(shí)候返回False的,對(duì)于系統(tǒng)內(nèi)建的基礎(chǔ)認(rèn)證類,我們?cè)诨卣{(diào)時(shí)只能返回None。
上述的寫法只是Pyramid中的1種方式,我們還可以通過其他的方式來實(shí)現(xiàn)相同的效果。雖然,第1次使用pyramid的時(shí)候,會(huì)覺得不怎么順手,但是隨著深入學(xué)習(xí),你會(huì)發(fā)現(xiàn)Pyramid其實(shí)還是挺靈活的,只是相比Flask、Django這樣的框架要寫的代碼會(huì)更多一些。
最后,在實(shí)例化BasicAuthAuthenticationPolicy類時(shí),我們還可以傳入?yún)?shù)debug來開啟這個(gè)認(rèn)證類的調(diào)試,其結(jié)果將記錄到日志中。
參考文章:
http://docs.pylonsproject.org...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44224.html
摘要:它有什么圖表加粗文字如何使用這個(gè)圖表庫可以通過存儲(chǔ)庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計(jì),提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個(gè)最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個(gè)JavaScript圖表庫將與一些關(guān)鍵...
摘要:它有什么圖表加粗文字如何使用這個(gè)圖表庫可以通過存儲(chǔ)庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計(jì),提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個(gè)最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個(gè)JavaScript圖表庫將與一些關(guān)鍵...
摘要:它有什么圖表加粗文字如何使用這個(gè)圖表庫可以通過存儲(chǔ)庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計(jì),提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個(gè)最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個(gè)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í)你也可以使用這一個(gè)屬性,繪制各種形狀。 說明 使用 CSS 可以繪制出許多形狀,比如三角形、梯形、圓形、橢圓,等 并不只是可以繪制矩形。下面來看看怎么實(shí)現(xiàn)這些形狀的吧。為了容易理解,文章分為基本形狀 和 組合形狀來說,基本形狀是比較...
閱讀 2671·2021-11-25 09:43
閱讀 2579·2021-11-22 09:34
閱讀 2823·2021-11-12 10:34
閱讀 1431·2021-10-20 13:46
閱讀 2300·2019-08-30 13:21
閱讀 929·2019-08-30 11:21
閱讀 483·2019-08-30 11:20
閱讀 2186·2019-08-29 17:20