第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

flask登錄時(shí)出錯(cuò)

flask登錄時(shí)出錯(cuò)

UYOU 2021-03-31 11:15:28
我在使用Flask-Login框架進(jìn)行身份驗(yàn)證時(shí)遇到困難。我已盡可能詳盡地瀏覽了文檔,但顯然我遺漏了一些明顯的內(nèi)容。class User():    def __init__(self, userid=None, username=None, password=None):        self.userid = userid        self.username = username        self.password = password    def is_authenticated(self):        return True    def is_active(self):        return True    def is_anonymous(self):        return False    def get_id(self):        return unicode(self.userid)    def __repr__(self):        return '<User %r>' % self.usernamedef find_by_username(username):    try:        data = app.mongo.db.users.find_one_or_404({'username': username})        user = User()        user.userid = data['_id']        user.username = data['username']        user.password = data['password']        return user    except HTTPException:        return Nonedef find_by_id(userid):    try:        data = app.mongo.db.users.find_one_or_404({'_id': userid})        user = User(data['_id'], data['username'], data['password'])        return user    except HTTPException:        return None上面是我的User類(lèi),位于 users/models.pylogin_manager = LoginManager()login_manager.init_app(app)login_manager.login_view = 'users.login'@login_manager.user_loaderdef load_user(userid):return find_by_id(userid)上面是我的用戶(hù)加載器。顯然有錯(cuò)誤消息,但是當(dāng)嘗試訪問(wèn)任何用修飾的視圖時(shí)@login_required,它會(huì)將我重定向到登錄表單。據(jù)我所知,該login_user函數(shù)實(shí)際上并不起作用,盡管它True在我調(diào)用它時(shí)返回。任何建議表示贊賞。
查看完整描述

3 回答

?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

經(jīng)過(guò)一段時(shí)間的調(diào)試器,我終于解決了這個(gè)問(wèn)題。


關(guān)鍵問(wèn)題是我試圖_id將MongoDB集合中的參數(shù)用作用戶(hù)ID。我沒(méi)有意識(shí)到_id參數(shù)是一種ObjectID類(lèi)型,而不是我需要的字符串或unicode。


def find_by_username(username):

    try:

        data = app.mongo.db.users.find_one_or_404({'username': username})


        user = User(unicode(data['_id']), data['username'], data['password'])

        return user


    except HTTPException:

        return None



def find_by_id(userid):

    try:

        data = app.mongo.db.users.find_one_or_404({'_id': ObjectId(userid)})

        user = User(unicode(data['_id']), data['username'], data['password'])

        return user

修改兩個(gè)函數(shù)適當(dāng)?shù)匦迯?fù)了此錯(cuò)誤。


查看完整回答
反對(duì) 回復(fù) 2021-04-01
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果您已驗(yàn)證它不是您的login_user功能,那么就離開(kāi)您的find_by_id功能。

的源代碼為user_loader

您設(shè)置的函數(shù)應(yīng)帶有用戶(hù)ID(a unicode)并返回用戶(hù)對(duì)象,或者None如果用戶(hù)不存在。

您的find_by_id功能使用find_one_or_404會(huì)引起注意。我將對(duì)該函數(shù)添加一些額外的調(diào)試,添加一些打印信息或進(jìn)行日志記錄,以顯示使用正確的unicode id調(diào)用了該函數(shù),并且該函數(shù)返回了一個(gè)User對(duì)象或None

希望這可以使您更進(jìn)一步地縮小問(wèn)題的范圍。


查看完整回答
反對(duì) 回復(fù) 2021-04-01
  • 3 回答
  • 0 關(guān)注
  • 248 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)