我正在使用已连接到单点登录系统的网站。现在我想添加协议条款页面。以下是我想到的流程:
如果我有登录用户的记录,这意味着用户已经看过它,所以我们不再需要显示协议页面。但如果表中不存在记录,我想重定向到具有协议条款的视图,用户只有在接受后才能进一步登录。如果不接受,我们会显示该网站的非签名版本。
由于它是系统上的单一登录,因此我在我的终端创建了一个表,以便跟踪登录该站点的用户。这是我应该查阅的表格。
以下是我在登录时创建记录的方法: 这是我的中间件类
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)
我现在在想的是我应该在以下的情况下中断请求:但我不确定那是不是应该这样做。我也不是django开发人员的经验。
如果这样做,那么我想我应该使用该位置的表单调用一个视图然后检查响应...?
答案 0 :(得分:0)
你可以使用视图装饰器。
如果您在装饰器中检测到该用户尚未同意最近的条款,则将其重定向到“条款”页面,并将额外参数传递给该视图。如果用户接受条款,请在条款视图中选择该参数,并根据该参数将用户重定向到上一个视图。