flask-login登录属性获取问题?

作者站长头像
站长
· 阅读数 22

我在使用flask-login进行登录管理,使用的是数据库模型里面的属性做标识符,以下为我的登录回调函数flask-login登录属性获取问题?

代码片段

class User(UserMixin):
    def __init__(self,user_id):
        self.id = user_id.id
        self.name = user_id.name
    
    def get_id(self):
        return str(self.id)


@super_login.user_loader
def load_user(user_id):
    return User(user_id)

以下为我的登录过程,我在表单验证成功后将数据库模型传入User这个类当中,想通过数据库.字段名去获取对应的用户id,但是为什么总是提示AttributeError: 'str' object has no attribute 'id'这个报错呢?同时为什么我使用current_user.name返回的属性也是None呢,数据库里面是有id这个字段的flask-login登录属性获取问题?代码片段

user_obj = model_login(name = username2)
            user = User(user_obj)
            login_user(user,remember = True)

            return jsonify({'code': 200, 'message': '登录成功', 'data': url_for('software_click.software_base')})

报错截图flask-login登录属性获取问题?

回复
1个回答
avatar
test
2024-06-30
from flask_login import UserMixin
from sqlalchemy import Column, Integer, String
from database import SessionLocal, engine, Base

class User(UserMixin, Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, unique=True, index=True)
    password = Column(String)

    def __init__(self, user_id):
        self.id = user_id.id
        self.name = user_id.name

    def get_id(self):
        return str(self.id)

@super_login.user_loader
def load_user(user_id):
    # 创建数据库会话
    db = SessionLocal()
    user = db.query(User).get(user_id)
    if user:
        return User(user)
    return None
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容