DRF之自定義認(rèn)證類

  • LoginView中:用戶登錄就對應(yīng)用戶生成token存入對應(yīng)關(guān)系表
    user = User.objects.filter(user=user,pwd=pwd).first()  # 看看有沒有此用戶
    import uuid  # 此模塊用來生成隨機(jī)字符串
    random_str= uuid.uuid4()
        if user:     # 是更新還是創(chuàng)建取決于user有沒有,如果有就更新,沒有就創(chuàng)建
             UserToken.objects.update_or_create(user=user,defaults={'token':random_str})
             response['user'] = user.user  # 將用戶名返回浸颓,可能有用
             response['token'] = random_str
    return Response(response)
    
  • 自定義認(rèn)證類:根據(jù)用戶token表查看是否通過認(rèn)證
    from rest_framework.exceptions import AuthenticationFailed
    from app01.models import UserToken
    
    class UserAuth():  # 【認(rèn)證第一步】
        def authenticate_header(self, request):  # 這個方法必須有
            pass
    
        def authenticate(self, request):
            token = request.query_params.get('token')
            usertoken = UserToken.objects.filter(token=token).first()  # token對象
            if usertoken:  # 如果用戶登錄了
                return usertoken.user, usertoken.token  # 此句話賦值給self.user,也就是request.user
                # 通過token值,找到user對象,并賦值給request。
                # 因?yàn)檫@只是訪問的第一步涂籽,第二部還要根據(jù)用戶的身份進(jìn)行不同的展示。
                # 而第二步是走到第一步的畢竟之路砸抛,所以想讓第二步有user對象评雌,可以通過第一步完成之后把user對象賦值給request
                # 當(dāng)然還可以自己通過token值查找用戶树枫,相對來說會比較麻煩。
            else:  # 用戶沒登錄就得拋錯
                raise AuthenticationFailed('認(rèn)證失斄尽团赏!')
    #  這就限制了用戶只有登錄之后才能訪問
    
  • 用的時候:
    from app01.authentication_classes import UserAuth
    class BookView(APIView):
        authentication_classes = [UserAuth]  # 【認(rèn)證第二步】
        def post(self, request):
            pass
        def get(self, request):
            pass
    
  • 登錄認(rèn)證流程:
    • 用戶輸入 賬號(唯一) 和 密碼 之后,走login函數(shù)耐薯,函數(shù)去數(shù)據(jù)庫查詢,如果有查詢結(jié)果丝里,證明存在曲初,就隨機(jī)生成一個 uuid4() 的字符串,存進(jìn)與之一一對應(yīng)的 usersession 表中杯聚。并且將這個字符串返回給前端臼婆。
    • 前端再次訪問時帶著字符串訪問。后端進(jìn)行驗(yàn)證幌绍。
    • 驗(yàn)證的時候通過 usersession 驗(yàn)證颁褂,如果有就通過,正常訪問傀广,如果沒有就拒絕訪問颁独。
  • 自定義認(rèn)證類流程
    • 定義的時候就是自定義一個類class UserAuth(BaseAuthentication)
    • 這個類繼承BaseAuthentication伪冰,
    • 定義一個 authenticate方法誓酒,
    • 進(jìn)行認(rèn)證,如果認(rèn)證通過就可以返回兩個值贮聂,
    • 認(rèn)證不通過靠柑,就拋一個 AuthenticationFailed 錯誤,
    • 使用時就在視圖函數(shù)中指定 authentication_classes= [UserAuth]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胰蝠,一起剝皮案震驚了整個濱河市序芦,隨后出現(xiàn)的幾起案子恨樟,更是在濱河造成了極大的恐慌,老刑警劉巖隔嫡,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榕栏,居然都是意外死亡畔勤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門扒磁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庆揪,“玉大人,你說我怎么就攤上這事妨托「组唬” “怎么了吝羞?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長内颗。 經(jīng)常有香客問我钧排,道長,這世上最難降的妖魔是什么均澳? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任恨溜,我火速辦了婚禮,結(jié)果婚禮上找前,老公的妹妹穿的比我還像新娘糟袁。我一直安慰自己,他們只是感情好躺盛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布项戴。 她就那樣靜靜地躺著,像睡著了一般槽惫。 火紅的嫁衣襯著肌膚如雪周叮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天界斜,我揣著相機(jī)與錄音仿耽,去河邊找鬼。 笑死锄蹂,一個胖子當(dāng)著我的面吹牛氓仲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播得糜,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼敬扛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朝抖?” 一聲冷哼從身側(cè)響起啥箭,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎治宣,沒想到半個月后急侥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侮邀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年坏怪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绊茧。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡铝宵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹏秋,我是刑警寧澤尊蚁,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站侣夷,受9級特大地震影響横朋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜百拓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一琴锭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耐版,春花似錦祠够、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽止剖。三九已至腺阳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穿香,已是汗流浹背亭引。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留皮获,地道東北人焙蚓。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像洒宝,于是被迫代替她去往敵國和親购公。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • 忙了一周了,也該抽點(diǎn)時間寫點(diǎn)兒東西. 話不多說,書接上文(上文在哪兒?),開發(fā)項(xiàng)目中經(jīng)常用到彈窗,比如,用戶要退出...
    從心開始的我閱讀 11,660評論 0 8
  • 五絕/柳綠人離 作者:心博雁歌、圖片:網(wǎng)絡(luò) 五更無困意宏浩,一夜未曾眠。 柳綠人離去靠瞎,眼前來到年比庄。
    心博1閱讀 169評論 2 2
  • 世間最好的愛情是什么樣子? 舉案齊眉乏盐,心心相印 世間最好的友誼是什么樣子佳窑? 知心密友,詩酒猖狂 世間最好的生活是什...
    Elaine的生活之道閱讀 1,201評論 13 43
  • 和30年未見的同學(xué)相見父能,對方從假小子變成了美富婆
    封之之閱讀 176評論 0 0
  • 相約起五更法竞, 結(jié)伴向山行耙厚。 霧淡青峰遠(yuǎn)强挫, 巒高雪晶瑩。 雨來石亂走薛躬, 風(fēng)過木齊鳴俯渤。 馬快氈房近, 茶香碗莫停型宝。
    華文生_289b閱讀 82評論 0 1