真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

rest_framework認(rèn)證源碼分析

認(rèn)證源碼分析

位置 :

APIVIew----》dispatch方法---》self.initial(request, *args, **kwargs)---->有認(rèn)證,權(quán)限,頻率三個版塊

在漢陽等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設(shè),漢陽網(wǎng)站建設(shè)費(fèi)用合理。

分析:

只讀認(rèn)證源碼: self.perform_authentication(request)---》
self.perform_authentication(request)就一句話:request.user,需要去drf的Request對象中找user屬性(方法)---》
Request類中的user方法,剛開始來,沒有_user,走 self._authenticate()

核心:Request類的 _authenticate(self):

1.在需要進(jìn)行認(rèn)證的視圖類中添加(認(rèn)證類是自己寫的類,該類繼承了BaseAuthentication):

2.此時apiview里的 authentication_classes就變成了自己第一步在視圖函數(shù)類里定義的了,而不會去自己的配置文件里找

3.然后正常執(zhí)行到apiview里的dispatch方法:

4.dispatch方法內(nèi)部又調(diào)用了initialize_request方法,返回了一個新的request對象

5.authenticators這個的值是get_authenticators()方法的返回值:返回值是一個個自己定義的繼承了BaseAuthentication類的認(rèn)證類對象

6.Request類中的authenticators變成了自定義類的對象

7.在繼續(xù)走apiview里的dispatch方法里的initial方法

8.進(jìn)入認(rèn)證模塊的方法

9.進(jìn)入新封裝request對象里

10.核心_authenticate方法

def _authenticate(self):
    # self是Request對象,所以去Request對象里找authenticators,
    # 最后self.authenticators的結(jié)果就是一個列表,列表里面是一個個自定義認(rèn)證類的對象
    for authenticator in self.authenticators:
        try:
            # 此時authenticator就是認(rèn)證類的對象,對象調(diào)用了authenticate方法,這個方法是需要我們在認(rèn)證類里重新寫的
            # 這個方法有兩個返回值
            user_auth_tuple = authenticator.authenticate(self)
        except exceptions.APIException:
            self._not_authenticated()
            raise

        if user_auth_tuple is not None:
            self._authenticator = authenticator
            # 這兩個返回值給了Request對象,就是request.user和request.auth(這就是為什么要求自己重新寫的authenticate方法要有兩個返回值了)
            self.user, self.auth = user_auth_tuple
            return

    self._not_authenticated()

網(wǎng)站欄目:rest_framework認(rèn)證源碼分析
文章源于:http://weahome.cn/article/dsogdhe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部