【问题标题】:Authentication issues - request.user and request.user.is_authenticated is not set身份验证问题 - request.user 和 request.user.is_authenticated 未设置
【发布时间】:2021-01-14 02:08:31
【问题描述】:
  1. 我有一个基于 Django 的应用程序。

  2. 我已使用包 python3-saml 将此应用程序与 SSO (Azure AD) 集成

  3. 应用程序 URL 正在重定向到 Azure AD 并返回响应。

  4. 如果我检查“request.user”或“request.user.is_authenticated”,则找不到用户详细信息。

  5. 对于使用普通 Django 配置的其他应用程序,相同的身份验证机制运行良好,但我使用了 Wagtail CMS,这会导致问题。

  6. 如果我在 SSO 成功认证后手动分配“request.user”,“request.user.is_authenticated”仍然显示为 false。

    request.user=request.session['AssocID']
    
    print(request.user) #Prints the Associate ID 
    
    print(request.user.is_authenticated) #Returns False
    

请帮助我获取 request.user 中的详细信息,并在通过身份验证时将 request.user.is_authenticated 设置为 true。

【问题讨论】:

  • 您还在为这个问题寻求帮助吗?

标签: python django azure-active-directory single-sign-on wagtail


【解决方案1】:

获得关联数据后,您只需将关联信息设置为会话变量。要首先对用户进行身份验证,您应该在自定义用户模型或内置用户模型中拥有该用户。完成后,您应该检索该员工的信息,并且您应该使用 Django 的 login 方法登录该用户。 Django login()

登录完成后,您将能够将 request.user.is_authenticated 设为 True。

【讨论】:

    【解决方案2】:

    你在哪里使用 request.user? 在页面类或其他地方?

    【讨论】:

      【解决方案3】:

      确保django.template.context_processors.request 在您的设置中TEMPLATES

      TEMPLATES = [
          {'OPTIONS': {
              ...,
              'django.template.context_processors.request'
              ...
              }
          }]
      

      【讨论】:

      • 是的,丹,它存在于我的模板下的设置文件中。 '选项':{'context_processors':['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors .messages', ], },
      猜你喜欢
      • 2013-10-27
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2013-05-16
      相关资源
      最近更新 更多