首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django,限制访问注册成功页面

问Django,限制访问注册成功页面
EN

Stack Overflow用户
提问于 2010-08-24 02:28:36
回答 2查看 400关注 0票数 3

这是我在几个框架中想知道的东西,我已经摆弄过了。假设我不想让用户在注册时自动登录(我想让他们激活),我如何才能让用户不能只访问“注册成功”页面?现在,这是我所拥有的:

代码语言:javascript
复制
def register(request):
    if request.method == 'POST':
        rf = forms.RegisterForm(request.POST)#register form
        pf = forms.ProfileForm(request.POST)#profile form (additional info)
        lf = forms.LoginForm()#login form is also on this page but is empty when registering
        if rf.is_valid() and pf.is_valid():
            newuser = User(username=rf.cleaned_data['username'],email=rf.cleaned_data['email'])
            newuser.set_password(rf.cleaned_data['password'])
            newuser.save()
            #need to mark newuser as inactive still
            profile = pf.save(commit=False)
            profile.user = newuser
            profile.save()
            return HttpResponseRedirect("/register-success/")
        return render_to_response("authentication/index.html", {'rform': rf, 'pform':pf,'lform':lf})
    return main(request)

def register_success(request):
    return render_to_response("authentication/register-success.html")

我的url-conf:

代码语言:javascript
复制
(r'^register-success/$','register_success'),

我想的另一种方式是只使用render_to_response("authentication/register-success.html"),而不做重定向。好处是,没有人可以访问register-uccess.html页面,缺点是如果用户刷新页面,它将尝试重新提交帖子。最佳实践是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-24 02:36:51

我会坚持重定向,获得重复用户是一个相当大的风险。没有注册的人看到你的注册成功页面的风险有多大?如果存在风险,您可以始终生成一个随机令牌,将其放入会话中并将其传递到您的注册成功页面,然后在您的视图中检查令牌是否匹配。但对于典型的成功页面来说,这似乎有很多工作要做。

我的建议是,不要担心人们在没有注册的情况下就能访问该页面。如果它只是静态的HTML,那么向每个人显示就不会有任何风险,对吧?

票数 1
EN

Stack Overflow用户

发布于 2010-08-24 02:36:20

您可以在register视图中设置cookie,这是一个会话密钥,您只能在呈现页面时在register_success视图中检查它,否则重定向到main注册。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3550536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档