从以下视图开始:
from braces.views import GroupRequiredMixin, LoginRequiredMixin
class AddAttributeView(LoginRequiredMixin, GroupRequiredMixin, FormView):
group_required = "SchemaAdmin"
...
我想实现以下目标:
使用上面的配置,用户总是被重定向到登录页面(即使他已登录但根本不在该组中)
另一方面,如果我设置raise_exception = True
,即使用户没有登录,应用程序也会抛出403.
如果没有设置raise_exception = my_function
并在my_function
中实现整个逻辑,是否有可能实现上述目标?
答案 0 :(得分:2)
LoginRequiredMixin
的django-braces文档建议您设置raise_exception = True
以便为登录用户和redirect_unauthenticated_users = True
引发异常,以便将未经身份验证的用户重定向到登录页。
class AddAttributeView(LoginRequiredMixin, GroupRequiredMixin, FormView):
group_required = "SchemaAdmin"
raise_exception = True
redirect_unauthenticated_users = True
由于this issue,目前似乎没有工作。作为一种解决方法,我建议为raise_exception
写一个简短的可调用。
from django.shortcuts import redirect
def raise_unless_unauthenticated(request):
if not request.user.is_authenticated():
return redirect('login')
# returning None means PermissionDenied will be raised
return None
class AddAttributeView(LoginRequiredMixin, GroupRequiredMixin, FormView):
group_required = "SchemaAdmin"
raise_exception = raise_unless_unauthenticated