Django,限制访问注册成功页面
这是我在几个我弄乱的框架中一直想知道的事情。假设我不想在用户注册时自动登录(我想让他们激活),我如何才能做到用户不能只访问“注册成功”页面?现在,我得到的是:Django,限制访问注册成功页面,django,django-forms,Django,Django Forms,这是我在几个我弄乱的框架中一直想知道的事情。假设我不想在用户注册时自动登录(我想让他们激活),我如何才能做到用户不能只访问“注册成功”页面?现在,我得到的是: def register(request): if request.method == 'POST': rf = forms.RegisterForm(request.POST)#register form pf = forms.ProfileForm(request.POST)#profile f
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配置:
(r'^register-success/$','register_success'),
我认为另一种方法是只呈现“对”响应(“authentication/register success.html”),而不执行重定向。好处是,没有人可以访问register-success.html页面,缺点是如果用户刷新页面,它将尝试重新提交帖子。最佳做法是什么?您可以在
注册
视图中设置cookie,一个会话密钥,您可以在注册成功
视图中仅在其存在时检查它,然后渲染页面,否则重定向到主注册。我会坚持重定向,获得重复用户是一个相当大的风险。如果有人看到您的注册成功页面但尚未注册,会有什么风险?如果存在风险,您可以始终生成一个随机令牌,将其放入会话并将其传递到您的注册成功页面,然后在您的视图中检查令牌是否匹配。但是,对于典型的成功页面来说,这似乎需要做很多工作
我的建议是,不要担心人们不用注册就可以访问该页面。如果只是静态HTML,那么向所有人显示不会有任何风险,对吗?现在是静态的,但可能不会。我现在正在写一个基本的web应用程序,思考人们如何处理事情。另一方面,在允许注册之前,我的注册表单会进行检查以确保用户不存在,因此如果用户重新提交,他们将返回到注册页面,表单上会显示“用户已存在”错误消息。只是一个提示,不要把太多的项目时间花在像这样你“可能”有一天需要的事情上,专注于让你的项目完成你现在确实需要的事情。您可以随时重新访问并重新考虑添加这样的功能。如果现在没有风险,我不会为此编写任何代码。如果将来会有风险,在那一点上添加此功能。是的,我同意,但鉴于此项目只是我个人对django的探索,我想我会问一下(也许还会学到一些类似于此的技巧!)