2010-12-03 1 views
4

Pourquoi Django redirige-t-il l'utilisateur vers la page de connexion lorsqu'il tente d'accéder à des pages protégées par des autorisations? Cela n'aurait-il pas plus de sens d'élever 403? Ensuite, je pourrais afficher un message significatif dans 403.html (en utilisant un middleware personnalisé) à l'utilisateur en disant qu'ils n'ont pas les autorisations pour effectuer l'action. En outre, je serais en mesure d'identifier les liens vers des vues que l'utilisateur ne devrait même pas être présenté à la première place ou les utilisateurs essayant d'accéder aux ressources interdites.Django - rediriger vers la page de connexion par rapport à 403

Répondre

2

Si vous parlez du décorateur login_required, il n'y a aucune raison pour que ait pour l'utiliser. Vous pourriez écrire un décorateur similaire qui a fait exactement ce que vous recherchez (renvoyer une réponse 403).

Malheureusement, le login_required decorator code est en fait quelque peu complexe, il ne serait donc pas trivial de simplement copier/modifier pour vos besoins, car la partie de redirection est en fait dans la fonction user_passes_test qu'ils utilisent.

+0

En savoir plus sur permission_required decorator. Je pourrais écrire décorateur personnalisé, je suis d'accord. Mais ma question est, ne devrait-il pas être le traitement standard de Django? Je n'ai pas accès, je suis connecté - envoyer 403 et le développeur doit définir 403.html. – Tomas

+0

Dans ce cas, consultez [ticket 5515] (http://code.djangoproject.com/ticket/5515) ou [ce middleware personnalisé] (http://chronosbox.org/blog/manipulando-erros-http-403 -permissao-negada-no-django? lang = fr) –

+0

Merci. J'ai décidé d'aller avec le middleware personnalisé. J'ai juste pensé que ce serait bien si Django supportait le 403 sans middleware personnalisé. – Tomas

Questions connexes