如何禁止匿名用户发表评论?

How do I disallow comments from anonymous users?

我正在使用 django-contrib-comments,我想知道如何禁止匿名用户 post 发表评论。

仅仅不向匿名用户显示表单是不够的,因为匿名用户仍然可以 post 请求正确的 URL。可以从以前的响应中计算出 CSRF 令牌和 security_hash 令牌,所以这还不够。

如果您的目标是禁止匿名用户 post 发表评论,您可以尝试覆盖默认提供的网址。将 login_required 添加到 post_comment 视图。通过为你的 django 项目修改 urls.py 来做到这一点:

from django.conf.urls import url, include
from django.contrib.auth.decorators import login_required
from django_comments.views.comments import post_comment

urlpatterns = [
    ...
    # the line below will override the url supplied in django_comments.urls
    url(r'^comments/post/$', login_required(post_comment), name='comments-post-comment'),
    url(r'^comments/', include('django_comments.urls')),
    ...
]

每当向 /comments/post/ 发出请求时,它将使用视图的 login_required 版本,因为模式将在 django_comments.urls.[=17 中的模式之前匹配=]