Djangoopenid:CSRF验证失败

2024-04-26 07:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这个SO问题中采纳了建议:What's the best solution for OpenID with Django?,并为我的应用程序安装了django-openid-auth。在

但我就是不能让它工作,当我试图登录时,我总是得到CSRF verification failed. Request aborted.。在

django csrf

我检查了所有的东西:

1

{% csrf_token %}出现在模板中:

<form name="fopenid" action="{{ action }}" method="post">
    {% csrf_token %}
    <fieldset>
        <legend>Sign In Using Your OpenID</legend>
        <div class="form-row">
            <label for="id_openid_identifier">OpenID:</label><br />
            {{ form.openid_identifier }}
        </div>
        <div class="submit-row ">
            <input name="bsignin" type="submit" value="Log in">
        </div>
 {% if next %}
        <input type="hidden" name="next" value="{{ next }}" />
 {% endif %}
    </fieldset>
</form>

2

在视图.py在django_openid_auth的内部,我发现他们使用RequestContext

^{pr2}$

3

我的MIDDLEWARE_CLASSES确实包含CsrfViewMiddleware

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

我只是不明白还有什么不对?你有什么想法吗?在

我使用的是django1.3beta。在

更新

这似乎是我的全球问题。我创建了一个简单的表单,得到了相同的结果:

def index(request):
    return render_to_response('index.html',
                              locals(),
                              context_instance=RequestContext(request))

在索引.html公司名称:

<form action="/" method="post">
    {% csrf_token %}
    <input type="text" name="test">
    <input type="submit">
</form>

呈现的HTML:

<form action="/" method="post">
    <div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="1fbd5345560d325bf05809260f7d43c3"></div>
    <input type="text" name="test">
    <input type="submit">
</form>

怎么了!?在


Tags: djangonamedivformtokenauthinputtype
2条回答

我试过了”管理.py运行服务器本地主机:8000“而不是”管理.py“运行服务器”而且它起作用了 我猜它有一些cookie问题是因为主机名中的ip 顺便说一句,我在django1.3的新副本中遇到了这个错误

实际上,我想这是我在Django遇到的第一个bug。我已经把我的拷贝更新到1.3的最新版本,一切都开始工作了。干得好,Django开发者!在

相关问题 更多 >