具有用户模型的Django自定义身份验证

时间:2020-09-03 15:13:57

标签: django

我正在尝试将SAML2身份验证添加到我的Django项目中。 现在,我可以与用户取得SAML响应,并且可以解析响应了。

我在SAML2请求的返回URL中,这是我的SAML2模块的特定视图。

在视图中,我有以下代码:

if 'samlUserdata' in request.session:
        if len(request.session['samlUserdata']) > 0:
            attributes = request.session['samlUserdata'].items()
            user = saml_authenticate(attributes)

saml_authentication是一种简单的方法,它可以获取SAML响应的属性,获取用户名并在数据库上进行搜索并返回用户模型。

现在还不清楚我必须做什么才能有效地登录软件。我不希望重定向到软件的主页,而是在其中自动登录,而不是登录页面。

我在Google上搜索时发现了自定义身份验证。

因此,我创建了一个新的后端身份验证并将其添加到设置中。 像这样:

 def authenticate(self, request, username):

                try:
                        logger.debug("Authenticating user '%s'" % (username))

                        user = User.objects.get(username=username)

                        if not user.is_active:
                                syslog.syslog("User '%s' not active" % (username))
                                return None

                        logger.debug("User '%s': authenticated" % (username))

                        return user

                except User.DoesNotExist as e:
                        logger.debug("User '%s' not found" % (username))
                        return None

但是我不知道如何正确使用。我已经有一个用户模型。 在Django DOC上,有一个示例,但(一如既往)只是添加经典用户名/密码登录的简单示例。

我遇到这样的情况,用户名/密码由外部机构验证,并且我只有一个受信任的响应,说我可以信任在响应中找到的用户名。

0 个答案:

没有答案