0

我正在使用一个已经连接到单点登录系统的站点。现在我想添加协议条款页面。这是我正在考虑的流程:

如果我有正在登录的用户的记录,这意味着用户已经看到它,所以我们不再需要显示协议页面。但是,如果表中不存在该记录,我想重定向到具有协议条款的视图,并且用户只有在接受后才能进一步进行登录过程。如果不接受,我们将显示该站点的未签名版本。

由于它是单点登录系统,因此我在自己的终端上创建了一个表来跟踪登录到该站点的用户。这是我应该查找记录的表。

以下是他们登录时创建记录的方式: 这是在我的中间件类中

shib_umnPersonType = shib_meta.get('uPersonType','')
shib_uRole = shib_umnPersonType.strip().split(';')[0]
#raise(shib_meta)
try:
    shib_user = ShibUser.objects.get(shib_username=username)
    user = shib_user.auth_user
    user.backend = "django.contrib.auth.backends.RemoteUserBackend"
except ObjectDoesNotExist:
    user = auth.authenticate(remote_user=username)
    user.shibuser_set.create(shib_username=username, shib_user_role=shib_uRole)   

我在这一点上的想法是我应该在except中打断请求:但我不确定这是否应该这样做。我也不是经验丰富的 django 开发人员。

如果那是这样做的方法,那么我想我应该从该位置调用带有表单的视图,然后检查响应...?

4

1 回答 1

0

你可以用视图装饰器来做到这一点。

如果您在装饰器中检测到该用户尚未同意最近的条款,则将其重定向到条款页面,并将额外参数传递给该视图。在条款视图中选择该参数,如果用户接受条款,则基于该参数将用户重定向到先前的视图。

于 2013-11-07T13:12:44.823 回答