0

我找到了这样一段代码,但我不明白它是如何工作的。如果您在未执行授权的情况下将路径设置为另一个页面 - 此页面将打开。

@login_required
def my_view(login_url='/'):
    return HttpResponseRedirect('/config')

我需要你的帮助。

(如何进行授权)

class LoginView(View):

    def get(self, request, *args, **kwargs):
        form = LoginForm(request.POST or None)
        context = {
            'form': form
        }
        return render(request, 'manager/login.html', context)

    def post(self, request, *args, **kwargs):
        form = LoginForm(request.POST or None)
        context = {
            'form': form
        }
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(username=username, password=password)
            if user:
                login(request, user)
                return HttpResponseRedirect('/config')
        return render(request, 'manager/login.html', context)
4

1 回答 1

0

您想将所有未经身份验证的用户重定向到您的登录页面,直到他们登录?
我认为使用 MiddleWares 是处理此问题的最佳方式,因为您想在所有视图上执行此操作。

from django.http import HttpResponseRedirect
from django.urls import reverse


class AuthRequiredMiddleware(object):
    def process_request(self, request):
        if not request.user.is_authenticated():
            return HttpResponseRedirect(reverse('login')) # Your login page url
        return None   

在你的 settings.py 中,你需要添加你的 MiddleWare:

MIDDLEWARE_CLASSES = (
    ...
    'path.to.your.AuthRequiredMiddleware',
)
于 2021-05-17T04:25:50.063 回答