Я хотел бы иметь возможность перенаправить подключенных пользователей на главную страницу, а также использовать user_passes_test и login_required спасибо - PullRequest
0 голосов
/ 08 апреля 2020

Я создал user_passes_test (groups) для ограничения пользователей по группам пользователей, но когда я перенаправляю всех пользователей, уже подключенных к главной странице, он создает перенаправление l oop и firefox отображает 'Страница неправильно перенаправлен ' - ссылка на мою домашнюю страницу - это ссылка, которая доступна всем подключенным пользователям [- это ссылка на страницу, которая авторизует


, когда я хочу оставьте домашнюю страницу d на этой странице с пользователем, который не авторизован firefox реферал Страница не перенаправлена ​​правильно Firefox обнаружил, что сервер перенаправляет запрос на этот адрес способом, который не будет успешным.

{% load static %}
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="{% static 'accounts/img/favicon.ico' %}">

    <title>Authentification</title>

    <link href="{% static 'accounts/css/bootstrap.min.css' %}" rel="stylesheet">
    <link href="{% static 'accounts/css/loguer.css' %}" rel="stylesheet">
    <script type="text/javascript" src="{% static 'accounts/js/jquery-3.3.1.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'accounts/js/bootstrap.min.js' %}"></script>
    
  </head>
  
  <body>
    <div class="container-fluid">
      <div class="row">
    

        <main role="main" class="col-sm-6 ml-sm-auto col-md-12 pt-6">

        <div class="container">
        <div class="card card-container">
            <!-- <img class="profile-img-card" src="//lh3.googleusercontent.com/-6V8xOA6M7BA/AAAAAAAAAAI/AAAAAAAAAAA/rzlHcD0KYwo/photo.jpg?sz=120" alt="" /> -->
            <img  class="profile-img-card" src="{% static 'accounts/img/academy.png' %}"  />
            {% if form.errors or error %}
              <p class="alert alert-warning alert-demissible fade show">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                  <span aria-hidden="true">&times;</span>
                </button>
                <strong>Warning!</strong> Your username and password didn't match. Pleae try again
                </p>
              {% endif %}

              {% if next %}
                {% if user.is_authenticated %}
                  <p class="alert alert-warning">
                    <strong>Warning!</strong>
                        You are authenticated as {{ user.username }}, but are not authorized to
                        access this page. Would you like to login to a different account?
                  </p>
                {% else %}
                  <p>Please log in to see this page.</p>
                {% endif %}
              {% endif %}
            <form action="{% url 'login' %}" method="post" class="form-signin">
                <span id="reauth-email" class="reauth-email"></span>
                {% csrf_token %}
                <div class="form-row">
                  {{ form.username.errors }}
                  {{ form.username.label_tag }} {{ form.username }}
                </div>
                <div class="form-row">
                  {{ form.password.errors }}
                  {{ form.password.label_tag }} {{ form.password }}
                  
                </div>
                <div id="remember" class="checkbox">
                    <label>
                        <input type="checkbox" value="remember-me"> Remember me
                    </label>
                </div>
                <input type="submit" value="login">
                <input type="hidden" name="next" value="{{ next }}">
            </form><!-- /form -->
            <a href="{% url 'password_reset' %}" class="forgot-password">
                Lost password?
            </a>
        </div><!-- /card-container -->
    </div><!-- /container -->

        </main>


      </div>
    </div>
  </body>
</html>
  1. urls.py

    from . import views
    from django.contrib.auth import views as auth_views
    from django.conf.urls import url, include
    
    urlpatterns = [
        url(r'^login/$',  auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),
        url(r'^login_next/$',  views.after_next_login, name='login_after_next'),
        url(r'^logout', auth_views.LogoutView.as_view(next_page='login'), name='logout'),
        url('accueil', views.home, name='home'),
     ]
    
  2. views.py

    from django.shortcuts import render,redirect,get_object_or_404
    from django.contrib.auth.decorators import login_required, user_passes_test
    from .models import Eleve
    
    
    # Create your views here.
    @login_required
    @user_passes_test(lambda u: u.groups.filter(name='secretariat').exists(), login_url='login')
    def student_list(request):
        students = Eleve.objects.all()
        return render(request, 'personnel/crud/list_students.html', locals())
    
...