You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用报错AttributeError: 'Auth'对象无'get_user'属性求助

解决Flask中Firebase Auth的AttributeError: 'Auth' object has no attribute 'get_user'错误

错误根源

  • firebase_admin.auth.get_user() 方法的作用是通过用户UID获取用户详情,并非直接接收前端传来的session cookie值。你直接将cookie中的session值传入该方法,既参数类型错误,也混淆了token验证与用户查询的流程。
  • 代码中url_for('/admin/login')写法错误,url_for需要传入视图函数名,而非路由路径。

修正方案

核心流程

  1. 从cookie中取出Firebase生成的ID Token(需确认前端存储的cookie键名,通常是idToken,而非session)
  2. 验证ID Token的有效性,解码后获取用户UID
  3. (可选)通过UID调用get_user()获取完整用户记录
  4. 处理token无效/过期的异常情况

修正后的代码

from firebase_admin import auth
from firebase_admin.exceptions import InvalidIdTokenError, ExpiredIdTokenError
from flask import redirect, url_for, render_template, request

@app.route("/admin/dashboard")
def admin_dashboard():
    # 从cookie获取ID Token,根据前端实际存储的键名调整
    id_token = request.cookies.get("session")
    
    if not id_token:
        # 替换为你的登录视图函数名
        return redirect(url_for("admin_login"))
    
    try:
        # 验证并解码ID Token
        decoded_token = auth.verify_id_token(id_token)
        user_uid = decoded_token["uid"]
        
        # 可选:获取完整用户信息
        current_user = auth.get_user(user_uid)
        
    except (InvalidIdTokenError, ExpiredIdTokenError):
        # Token无效或过期,重定向到登录页
        return redirect(url_for("admin_login"))
    
    return render_template("admin/dashboard.html", user=current_user)

额外注意事项

  • 确认前端登录后,正确将Firebase的ID Token存入cookie,键名要与后端获取逻辑一致。
  • url_for的参数必须是视图函数的名称,比如登录路由对应的函数是def admin_login(): ...,就用url_for("admin_login")。
  • 必须捕获token验证相关的异常,避免程序因无效token崩溃。

内容的提问来源于stack exchange,提问作者Sandip Parajuli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:02:08