保护网站免受未经身份验证的用户的侵害

时间:2011-11-01 19:19:25

标签: django django-views

当用户未登录时,应将其重定向到登录页面。

if not request.user.is_authenticated()
    # redirect to the login page

但是必须在每个视图中编写此代码。有一种方法只能为所有视图编写一次公共代码吗?

2 个答案:

答案 0 :(得分:8)

答案 1 :(得分:5)

你可以用一块中间件来做到这一点:

class RequireLoginMiddleware(object):
    def process_request(self, request):
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/login/')
        return None

当然,您不希望为登录页面本身执行此操作:

class RequireLoginMiddleware(object):
    def process_request(self, request):
        if request.path.startswith('/login'):
            return None
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/login/')
        return None