Django:将用户设置为“已验证”无需重新加载页面

发布于 2024-11-06 10:07:55 字数 405 浏览 1 评论 0原文

在我构建的 web 应用程序中,用户身份验证是在模态 jQuery 窗口中处理的。

我的问题:
注册后,是否可以在关闭模式窗口时将用户设置为“已验证”(在 Django 眼中),而无需重新加载父窗口?

目前的流程如下:
1) 用户访问页面并点击会员专用功能
2) 页面变灰并出现模态 jQuery 注册框(我使用的是 Colorbox)
3)用户在我的网站上注册并关闭模式窗口
4) Colorbox 触发“onClosed()”处理程序来刷新父页面

我想修改#4,让 Colorbox 处理程序调用 Javascript 函数将用户设置为“已验证”,而不是重新加载的粗略方法页。

有人以前做过这个并愿意分享你的建议吗?

In the webapp I've built, user authentication is handled in a modal, jQuery window.

My question:
After registration, is it possible to set the user as "authenticated" (in Django's eyes) in the parent window upon closing the modal window without reloading the parent window?

The flow currently goes like this:
1) User visits a page and clicks on a members-only feature
2) Page grays out and a modal jQuery registration box appears (I'm using Colorbox)
3) User registers with my site and closes the modal window
4) Colorbox fires off an "onClosed()" handler to refresh the parent page

I'd like to modify #4 to have the Colorbox handler call a Javascript function to set the user as "authenticated" instead of the coarse method of reloading the page.

Anyone done this before and care to share your advice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不打扰别人 2024-11-13 10:07:55

我自己没有尝试过,但我建议您在用户提交注册时手动验证/登录用户(从 django.contrib.auth 模块),然后呈现将由 jquery 处理的响应。此响应可能只是表示帐户已成功创建的状态代码。该响应是一个普通的 http 响应,因此它应该在标头中包含新 sessionid 的 cookie 信息。该标头在 jQuery 执行任何操作之前由浏览器处理,因此应以与重新加载整个页面相同的方式处理。

I haven't tried it myself but I would suggest you authenticate/login (from the django.contrib.auth module) the user manually when the user submits the registration from and then render a response that will processed by jquery. This response could be just a status code representing that the account was created successfully. The response is a normal http response so it should contain the cookie info for the new sessionid in the header. This header is processed by the browser before jQuery does anything with it so should be handled the same way as reloading an entire page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文